18-SAVNET配置
本章节下载: 18-SAVNET配置 (540.91 KB)
目 录
SAVNET(Source Address Validation in Intra-domain Networks and Inter-domain Networks,域内域间源地址验证架构协议)是一种防范伪造IPv6源地址网络攻击的技术,它基于SAVNET的协议报文生成SAVNET表项,用于验证IPv6源前缀的合法性。当设备的接口收到IPv6报文后,如果存在该报文的源IPv6地址对应前缀的SAVNET表项,则报文会被接收,反之报文会被丢弃。
SAVNET可以部署在与接入网相连的骨干网内的所有设备上。
SAVNET可以在单个自治域内部署,也可以跨越多个自治域部署,跨域部署在域内部署的基础上实现。下面将对两种部署方式分别进行介绍。
开启SAVNET功能的设备称为SAVNET设备,SAVNET邻居设备之间通过交互SPA(Source Prefix Advertisement,源前缀通告)信息和DPP(Destination Prefix Probing,目的前缀探测)信息,在每台SAVNET设备上生成SAVNET表项(IPv6报文源前缀和报文入接口的映射关系)。
SAVNET设备通过SPA信息在SAVNET邻居之间通告各SAVNET设备本地学习到的源前缀信息,最终使得同一个SAVNET域内的每台SAVNET设备上均能学习到所有SAVNET设备本地学习到的源前缀信息。SPA信息中包含如下重要内容:
· Origin Router ID:源Router ID。用于标识发送SPA信息的SAVNET设备。
· Source Prefixes:源前缀信息。源前缀信息来源于设备本地学习到的直连、静态、动态或UNR(User Network Route,用户网络路由)路由,可以通过在BGP IPv6 SAVNET地址族下配置import-route命令引入这些路由。
SAVNET设备通过发送DPP信息,探测指定目的地址的IPv6报文在域内的转发路径,沿途的SAVNET设备根据DPP信息生成SAVNET表项。DPP信息中包含如下重要内容:
· Origin Router ID:源Router ID。用于标识发送DPP信息的SAVNET设备。
· Dest Prefixes:目的前缀信息。目的前缀来源于设备本地IPv6 FIB表中的非直连转发目的前缀。
· Router ID List:Router ID列表。用于记录DPP信息的转发路径。SAVNET邻居设备在接力转发DPP信息时,会将自己的源Router ID添加到Router ID List中,再转发给下一跳邻居设备。
SAVNET设备通过BGP(Border Gateway Protocol,边界网关协议)来传递SAVNET协议信息。BGP为此新增了BGP IPv6 SAVNET地址族,并通过该地址族下的会话交互BGP IPv6 SAVNET路由信息,SPA信息和DPP信息即携带在BGP IPv6 SAVNET路由信息中。BGP IPv6 SAVNET地址族的AFI(Address Family Identifier,地址族标识符)为2,SAFI(Subsequent Address Family Identifier,子地址族标识符)为251。有关BGP的详细介绍,请参见“三层技术-IP路由配置指导”中的“BGP”。
BGP IPv6 SAVNET路由包括两种类型:
· SPA路由:用于传递SPA信息。
· DPP路由:用于传递DPP信息。
(1) 生成SPA路由:在BGP IPv6 SAVNET地址族视图下执行import-route命令后,SAVNET设备会生成SPA路由,SPA路由包含源前缀以及源Router ID信息,生成的路由信息中的前缀为import-route命令引入的路由前缀,生成的路由的源Router ID为设备本地配置的Router ID。
(2) 发布SPA路由:只有以下两种路由能够被发布给BGP IPv6 SAVNET对等体。
¡ 通过ipv6 savnet port-type命令配置用户侧接口后,SPA路由对应的IP路由的出接口为用户侧接口。
¡ 通过路由策略为SPA路由应用了SAVNET接入标签。
SAVNET设备通过import-route命令生成SPA路由后,存在以下两种DPP路由的生成方式:
· 根据IPv6 FIB转发表中非直连表项的转发目的前缀生成DPP路由(非直连表项对应的IP路由协议类型不为Direct)。DPP路由信息中包含源Router ID、目的前缀以及Router ID列表,其中源Router ID为设备本地配置的Router ID,目的前缀与IPv6 FIB转发表中的非直连转发目的前缀相同,Router ID列表中的Router ID为设备本地配置的Router ID。
· 根据SAVNET设备已经应用的IPv6策略路由生成DPP路由。IPv6策略路由需要应用在本地发布的源前缀所在的接口上才能生成DPP路由。生成的DPP路由信息中包含源Router ID、目的前缀以及Router ID列表,其中源Router ID为设备本地配置的Router ID,Router ID列表中的Router ID为设备本地配置的Router ID,目的前缀与设备应用的IPv6策略路由关系如下:
¡ 对于设置了ACL匹配的IPv6策略路由:
- 如果该ACL存在仅匹配源地址的permit规则,不存在匹配目的地址的规则,则需要ACL源地址能够匹配本地发布的源前缀信息,才能生成目的前缀为任意IPv6地址::的DPP路由;否则,不生成DPP路由。
- 如果该ACL存在同时匹配源地址和目的地址的permit规则,则需要ACL源地址能够匹配本地发布的源前缀信息,才能生成目的前缀为ACL目的地址的DPP路由;否则,不生成DPP路由。
- 如果该ACL存在仅匹配目的地址的permit规则,不存在匹配源地址的规则,则生成目的前缀为该目的地址的DPP路由。如果ACL匹配的目的地址为any,则生成目的前缀为任意IPv6地址::的DPP路由。
- 如果该ACL不存在任何permit匹配规则,则不生成DPP路由。
¡ 对于设置了其他匹配规则的IPv6策略路由,DPP路由的目的前缀为任意IPv6地址::。
有关import-route命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。有关IPv6策略路由的详细介绍,请参见“三层技术-IP路由配置指导”中的“IPv6策略路由”。有关ACL的详细介绍,请参见“ACL和QoS配置指导”中的“ACL”。
SAVNET的工作机制可以概括为:
(1) 通过建立BGP邻居建立SAVNET组网
(2) 在BGP IPv6 SAVNET对等体间通告SPA路由
(3) 在BGP IPv6 SAVNET对等体间传递DPP路由
(4) SAVNET表项生成
(5) 根据SAVNET表项对收到的IPv6报文合法性进行验证
在设备之间建立BGP邻居并配置BGP IPv6 SAVENET地址族,建立SAVNET邻居。
SAVNET设备生成SPA路由后,会将SPA路由发布给所有的BGP IPv6 SAVNET对等体,SPA路由接收方配置了路由反射功能后,可以将该路由反射出去。在SPA路由的传播过程中,路由信息中携带的源前缀和源Router ID不会发生改变。
设备通过BGP IPv6 SAVNET会话收到SPA路由后,将SPA路由信息中的Router ID与本地配置的Router ID进行比较:
· 如果相同,则丢弃该路由。
· 如果不同,则将SPA路由信息中的源前缀信息和Router ID的对应关系保存到本地的邻居信息表中,同时将SPA路由反射给其他BGP IPv6 SAVNET对等体。
SAVNET设备生成DPP路由,并且通过destination-probing enable命令开启SAVNET目的前缀探测功能后,根据DPP路由生成的方式不同,发送机制如下。
· 根据IPv6 FIB转发表中非直连表项的转发目的前缀生成的DPP路由:查找DPP路由的目的前缀在IPv6 FIB表中的下一跳出接口,并判断设备是否通过该出接口建立了直连BGP IPv6 SAVNET对等体。如果建立了直连对等体,则设备会将DPP路由发送给该直连对等体;如果未建立直连对等体,则设备不会将DPP路由发送出去。
· 根据SAVNET设备已经应用的IPv6策略路由生成的DPP路由:设备判断IPv6策略路由设置的报文下一跳出接口上是否建立了直连BGP IPv6 SAVNET对等体。如果建立了直连对等体,则设备会将DPP路由发送给该直连对等体;如果未建立直连对等体,或应用的IPv6策略路由未设置报文下一跳,则设备不会将DPP路由发送出去。
上述机制的作用是借助去往远端目的前缀的最优路径,向远端设备发送DPP信息,使得沿途设备均可以根据收到DPP信息的接口生成SAVNET表项。
设备在接收到DPP路由后,将收到的DPP路由中的源Router ID与本地配置的Router ID进行比较:
· 如果相同,则丢弃该DPP路由。
· 如果不同,则将接收到的DPP路由中携带的目的前缀与本地IPv6 FIB表进行匹配:
¡ 如果存在能到达该前缀的IPv6 FIB表项,则将本地配置的Router ID作为路由属性添加到DPP路由信息的Router ID列表中,查找该前缀在FIB中的下一跳出接口,并判断设备是否通过该出接口建立了直连BGP IPv6 SAVNET对等体。只有建立了直连对等体,设备才会将DPP路由仅转发给该直连对等体。
¡ 如果DPP路由携带的目的前缀为任意IPv6地址::,则设备会查找本地IPv6 FIB转发表中的每一个非直连表项,并为每一个非直连表项生成一个DPP路由,DPP路由携带的目的前缀与非直连表项的目的地址前缀相同。本过程生成的DPP路由亦只会被设备发送给在非直连表项的下一跳出接口上建立了直连BGP IPv6 SAVNET会话的对等体。
¡ 如果不存在能到达该前缀的IPv6 FIB表项,则丢弃该DPP路由。
DPP路由的接收者会根据DPP路由携带的源Router ID查找本地保存的源前缀信息(源前缀信息通过SPA路由传播),如果查找到了与DPP路由相同源Router ID对应的源前缀信息,则生成SAVNET表项。在生成的SAVNET表项中,源前缀信息与收到DPP路由的接口进行绑定,设备后续在收到源地址为源前缀地址的报文时,只有从SAVNET表项指定的接口(即收到DPP路由的接口)收到的报文会被处理,否则报文会被丢弃。
SAVNET根据SAVNET表项对用户侧接口收到的IPv6报文合法性进行校验,当SAVNET设备的接口收到IPv6报文后,如果存在该报文的源IPv6地址对应的SAVNET表项,则报文会被接收;反之报文会被丢弃。
如图1-1所示,在SAVNET网络中,Device A、Device B和Device C均为SAVNET设备,建立BGP IPv6 SAVNET会话。其中,Device A通过10::/64网段与用户网络相连。为了保障核心网络的安全性,需要Device B和Device C均生成SAVNET表项,仅处理各自收到的来自Port 1的用户网络报文。
图1-1 SAVNET组网图
部署了SAVNET功能后,SAVNET协议信息的传播过程以及SAVNET表项的生成过程为:
1. Device A在BGP IPv6 SAVNET地址族中引入本地的直连路由,生成源前缀为10::/64、源Router ID为1.1.1.1的SPA路由,并发布给Device B。Device B收到SPA路由后,记录其中的源前缀信息与源Router ID的对应关系,并将该SPA路由反射给Device C。Device C收到Device B反射的SPA路由后,记录其中的源前缀信息与源Router ID的对应关系。
(2) Device A查找本地IPv6 FIB表项,其中22::/64和30::/64均为非直连的转发目的前缀,即产生两条DPP路由,两条DPP路由的目的前缀分别为22::/64和30::/64,源Router ID均为1.1.1.1,Router ID列表中的Router ID均只包含1.1.1.1。
(3) 在Device A的IPv6 FIB表项中,转发目的前缀22::/64和30::/64的下一跳出接口均为Port 1,且Device A和Device B通过Port 1建立了直连BGP IPv6 SAVNET会话,所以Device A将产生的两条DPP路由均发布给Device B。
(4) Device B接收到目的前缀为22::/64的DPP路由后,根据该DPP路由信息中携带的源Router ID,查找到本地保存过该源Router ID对应的源前缀信息,即生成匹配的前缀为源前缀10::/64、入接口为Port 1的SAVNET表项。在后续的报文转发中,Device B如果收到源IPv6地址属于10::/64前缀的报文,则仅会处理当中从Port 1收到的报文。由于目的前缀22::/64在Device B的IPv6 FIB表项中为直连的转发目的前缀,Device B不会将目的前缀为22::/64的DPP路由转发出去。
(5) Device B接收到目的前缀为30::/64的DPP路由后,根据该DPP路由信息中携带的源Router ID,查找到本地保存过该源Router ID对应的源前缀信息,即生成匹配的前缀为源前缀10::/64、入接口为Port 1的SAVNET表项。目的前缀为30::/64的DPP路由和目的前缀为22::/64的DPP路由携带的源Router ID相同,触发生成的SAVNET表项亦相同,但是Device B不会生成重复的SAVNET表项,仅会生成一条SAVNET表项。
(6) Device B查找本地IPv6 FIB表项,其中30::/64为非直连的转发目的前缀,下一跳出接口为Port 2,并且Device B通过Port 2与Device C建立了直连BGP IPv6 SAVNET会话。所以Device B将本地的Router ID填入来自Device A的、目的前缀为30::/64的DPP路由,不修改路由信息中的源Router ID,并通过Port 2将该DPP路由转发给Device C。
(7) Device C接收到目的前缀为30::/64的DPP路由后,根据该DPP路由信息中携带的源Router ID,查找到本地保存过该源Router ID对应的源前缀信息,即生成匹配的前缀为源前缀10::/64、入接口为Port 1的SAVNET表项。在后续的报文转发中,Device C如果收到源IPv6地址属于10::/64前缀的报文,则仅会处理当中从Port 1收到的报文。由于目的前缀30::/64在Device C的IPv6 FIB表项中为直连的转发目的前缀,Device B不会将目的前缀为30::/64的DPP路由转发出去。
在如图1-2所示的组网中,前缀1::1/128由Device E发布给网络中的其他所有设备。Device A将该前缀引入到BGP IPv6 SAVNET地址族后,生成SPA路由和DPP路由向外发布。其中,DPP路由的发布路径如图1-2中的蓝色路径所示。
正常情况下,Device E接收到来自Device A的SPA路由和DPP路由后,会生成接口为Port 1的SAVNET表项,即只会处理从Port 1接口收到的报文。如果Device B和Device C之间的链路断开,则需要等到Device A去往1::1/128的路由重新收敛并重新生成DPP路由后,Device E才能从Device A→Device B→Device D→Device E路径收到更新的DPP路由并更新生成的SAVNET表项,以确保能够处理从Port 2接口收到的报文。
图1-2 代理DPP路由组网组
目前DPP路由在BGP协议中通过Route-refresh消息进行发送,具有一定的发送周期,不能实时响应网络中的链路变化从而更新发布的DPP路由。
BGP支持了DPP路由的代理发送功能来解决了SAVNET网络中的上述问题。
DPP路由代理功能设备缺省支持,无需配置。
非DPP路由的产生端(如图中Device B,后续称之为DPP中继设备)在收到DPP路由后,记录并保存DPP路由要探测的前缀信息。如果目的前缀的下一跳发生了更改,但此时该DPP中继设备未收到更新的DPP报文,则该中继设备立刻产生一个相同目的前缀的代理DPP路由,并发给能够到达该目的前缀的下一跳BGP IPv6 SAVNET对等体。对等体收到代理DPP路由后,将该路由作为普通DPP路由进行转发。
在本例中,Device B与Device C之间的链路断开,Device A路由重新收敛后,可能还处在等待发送下一个DPP路由的周期内,无法及时发送DPP路由以帮助其他设备更新SAVNET表项。Device B路由收敛后,未收到来自Device A的DPP更新路由,便立即发布代理DPP路由,沿着Device B→Device D→Device E将代理DPP路由传递至Device E,Device E根据代理DPP路由更新生成的SAVNET表项,以保证可以正确处理从Port 2接口收到的报文。
代理DPP路由的效果与路由完全收敛后Device A自身发出更新后的DPP路由相同。代理DPP路由的好处是可以无需等待DPP路由产生端设备发送DPP路由的间隔周期,在网络中到达目的前缀的下一跳发生变化后,快速进行响应以更新SAVNET设备的SAVNET表项,尽可能地减少报文丢失。
缺省情况下,SAVNET设备需要收到DPP路由才能生成SAVNET表项。由于需要FIB存在非直连表项或者策略路由,DPP路由往往只能在部署了SAVNET的骨干网设备上产生,在如图1-3所示的组网中,骨干网边缘的PE设备接入的CE设备无法产生DPP,导致PE设备上无法生成包含接入子网的接口的SAVNET表项。
现提供一种仅需SPA路由就能生成SAVNET表项的机制,以帮助接入场景中的PE设备过滤源地址仿冒报文。并且本机制支持于单归接入和多归接入两种场景。
在接入场景中,PE设备为自身的接口配置SAVNET接入标签后,该标签的信息可以被携带在SPA路由中,根据SPA路由携带的接入标签信息,设备即可生成SAVNET表项。具体的工作机制为:
(1) 设备通过ipv6 savnet miig-tag命令为自身的接口配置SAVNET接入标签,标签信息包含标签值和接入类型。
(2) 设备通过import-route命令引入源前缀信息从而生成SPA路由时,指定route-policy route-policy-name参数,如果该参数指定的路由策略中配置了apply tag命令,则生成的SPA路由会携带包含标签值和接入类型的接入标签信息。其中,标签值为apply tag命令指定的标签值,接入类型为标签值在ipv6 savnet miig-tag命令的配置中对应的接入类型。
(3) 设备在生成或收到携带接入标签信息的SPA路由时进行判断:
¡ 如果设备本地存在与SPA路由携带的接入标签信息相同的接口,则设备生成SAVNET表项,表项的源前缀为SPA路由携带的源前缀,入接口为与SPA路由接入标签信息相同的接口。
¡ 如果设备本地不存在与SPA路由携带的接入标签信息相同的接口,则设备不生成SAVNET表项。
(4) 如果设备收到更新的SPA路由,则根据SPA路由生成的SAVNET表项也会同步进行更新。
在图1-4所示的组网中,PE 1和PE 2作为SAVNET骨干网的边缘设备,为CE 1和CE 2提供接入服务。其中,CE 1单归接入PE 1,CE 2多归同时接入PE 1和PE 2。CE 1将子网1内的前缀信息P1发布给PE 1,CE 2将子网2内的前缀信息P2发布给PE 1,将子网2内的前缀信息P3发布给PE 2。
PE 1和PE 2的接入标签信息配置如图所示,根据该接入标签信息生成SAVNET表项的过程为:
1. PE 1根据前缀信息P1和P2生成SPA路由,并通过路由策略为SPA路由携带接入标签信息:
¡ SPA路由1携带的源前缀为P1,接入标签值为1,接入类型为单归接入类型。
¡ SPA路由2携带的源前缀为P2,接入标签值为2,接入类型为完整多归接入类型。
(2) PE 1的Interface 1与SPA路由1的接入标签信息相同,生成源前缀为P1、入接口为Interface 1的SAVNET表项。PE 1的Interface 2与SPA路由2的接入标签信息相同,生成源前缀为P2、入接口为Interface 2的SAVNET表项。
(3) PE 2根据前缀信息P3生成SPA路由3,并通过路由策略为SPA路由携带接入标签信息。生成的SPA路由3携带的源前缀为P3,接入标签值为2,接入类型为完整多归接入类型。
(4) PE 2的Interface 1与SPA路由3的接入标签信息相同,生成源前缀为P3、入接口为Interface 1的SAVNET表项。
(5) PE 1将SPA路由1和2发布给PE 2,PE 2将SPA路由3发布给PE 1。
(6) PE 1的Interface 2与SPA路由3的接入标签信息相同,生成源前缀为P3、入接口为Interface 2的SAVNET表项。
(7) PE 2不存在与SPA路由1的接入标签信息相同的接口,所以不根据SPA路由1生成SAVNET表项。PE 2的Interface 1与SPA路由2的接入标签信息相同,生成源前缀为P2、入接口为Interface 1的SAVNET表项。
图1-5 跨域SAVNET组网模型
如图1-5所示,在通过SAVNET对跨域流量进行安全验证的场景中,存在如下两个需要配置的AS域:
· 源AS:报文源地址的前缀所属的AS。
· 验证AS:需要生成SAVNET表项,来对跨域流量进行安全验证的AS。
图1-6 跨域SAVNET组网部署
如图1-6所示,在源AS和验证AS内,各需要在所有的边界设备中选出一个DR(Designated Router,指定路由器)设备。DR设备之间需要建立EBGP IPv6 SAVNET会话,以交互域间的SAVNET协议信息。非DR的ASBR均需要与本域内的DR建立IBGP IPv6 SAVNET会话,以交互域内的SAVNET协议信息。
SAVNET新增了如下两类协议信息,以实现跨域的SAVNET组网:
· 域间SPA信息:验证AS的DR通过域间SPA信息学习到源AS域的源前缀信息,并且通过IBGP IPv6 SAVNET会话将源前缀信息扩散给验证AS内的其他ASBR。域间SPA信息包含如下重要内容:
¡ Source AS Number:源前缀信息的始发AS号,即源AS的AS号。
¡ Source Prefixes:源前缀地区来自于源AS内ASBR本地学习到的直连、静态、UNR、IGP或EBGP路由,可以通过在BGP IPv6 SAVNET地址族下配置import-route命令引入这些路由。
· 域间DPP信息:源AS通过向验证AS发送域间DPP信息,帮助验证AS内的ASBR确定去往源AS的最佳出口,并根据该出口生成SAVNET表项。域间DPP信息中包含如下重要内容:
¡ Source AS Number:域间DPP信息的始发AS号,即源AS的AS号。
¡ Validation AS Number:域间DPP信息要发往的目的AS号,即验证AS的AS号。
¡ Ingress Neighbor AS List:入口邻居的AS列表,表示从源AS去往验证AS的所有最佳路径上,到达验证AS前的上一跳AS。
跨域的SPA信息和DPP信息仍然通过SPA路由以及DPP路由进行传播。传播域内SPA信息的SPA路由被称为域内SPA路由,传播域间SPA信息的SPA路由被称为域间SPA路由,传播域内DPP信息的DPP路由被称为域内DPP路由,传播域间DPP信息的DPP路由被称为域间DPP路由。
图1-7 跨域SAVNET表项生成过程
如图1-7所示,跨域SAVNET表项的生成过程为:
1. 源AS内的ASBR通过import-route命令引入源前缀P 1和P 2后,通过域内的SPA路由将源前缀信息发布给DR设备ASBR 3。
(2) ASBR 3将域内SPA路由转化为域间SPA路由并发送给对端的DR设备ASBR 4。
(3) ASBR 4记录域间SPA路由携带的源前缀信息以及源AS的AS号,并将域间SPA路由转发给验证AS内的其他ASBR。
(4) 验证AS内的非DR设备亦记录域间SPA路由携带的源前缀信息以及源AS的AS号。
(5) 源AS内非DR的ASBR通过peer designate-router命令指定DR,并且通过savnet validation-as命令指定验证AS的AS号后,会收集自身去往验证AS的AS_PATH中的入口邻居AS号,并将收集到的入口邻居AS号发送给DR设备ASBR 3。
图1-8 源AS收集入口邻居AS号示意图
收集入口邻居AS的过程如图1-8所示。源AS的ASBR取本地BGP路由表中的所有经过或者来自验证AS的优选路由的AS_PATH,并取其中所有验证AS的后一跳AS(也就是从源AS去往验证AS路径中,到达验证AS的前一跳AS),将其汇总后由源AS的DR发送给验证AS的DR。例如,源AS为100,验证AS为200,源AS共从验证AS收到来自两条不同路径的优选路由,分别经过AS 5、AS 10以及AS 20。对于两条路由,其AS_PATH中针对验证AS 200的入口邻居AS分别为AS 10和AS 20,AS 100内的ASBR即会将这些AS都汇总到DR中,由DR将入口邻居AS整合为入口邻居AS列表发送给AS 200。目前,设备在收集入口邻居AS时也支持FRR中备路由的入口邻居AS收集,以确保跨域流量在快速路径切换后也可以通过安全验证。
(6) ASBR 3通过savnet validation-as命令指定验证AS的AS号后,也会收集自身BGP路由中的入口邻居AS号。然后ASBR 3汇总域内所有的入口邻居AS,形成入口邻居AS列表,通过域间DPP路由发送给对端DR设备ASBR 4。
(7) ASBR 4收到域间DPP路由后,根据其中携带的入口邻居AS列表,找到去这些邻居的出接口,并且根据域间DPP路由中的源AS号找到来自该AS的源前缀,为这些源前缀形成SAVNET表项,形成的SAVNET表项的入接口即为去往入口邻居的出接口。每一个邻居AS号都能生成一份SAVNET表项。
(8) ASBR 4将收到的域间DPP路由转发给域内的其他ASBR,其他ASBR亦根据路由携带的域间DPP信息,通过与步骤(7)相同的过程形成SAVNET表项。
SAVNET仅支持在公网部署,不支持VPN实例。
SAVNET不支持在二层VPN(包括MPLS L2VPN、VPLS、VXLAN等)的AC(Attachment Circuit,接入电路)上配置。
本功能仅在下表所列单板上配置生效。
表1-1 单板信息一览表
单板类型 |
单板丝印 |
CEPC单板 |
CEPC-XP4LX、CEPC-XP24LX、CEPC-XP48RX、CEPC-CP4RX、CEPC-CP4RXA、CEPC-CP4RX-L、CEPC-CQ8L、CEPC-CQ8LA、CEPC-CQ8L1A、CEPC-CQ8L3A、CEPC-CQ16L1、CEPC-DQ2L1-G |
CSPEX单板 |
CSPEX-1304X、CSPEX-1404X、CSPEX-1502X、CSPEX-1504X、CSPEX-1504XA、CSPEX-1602X、CSPEX-1602XA、CSPEX-1804X、CSPEX-1512X、CSPEX-1612X、CSPEX-1812X、CSPEX-1502XA、CSPEX-1802X、CSPEX-1802XA、CSPEX-1812X-E、CSPEX-2304X-G、CSPEX-2304X-LG、CSPEX-2612XA、CSPEX-2612X3A |
SPE单板 |
RX-SPE200、RX-SPE200-E |
仅三层以太网接口及子接口、三层聚合口及子接口、VLAN接口和FlexE接口支持本功能。
SAVNET配置任务如下:
(1) 配置SAVNET的BGP扩展
(2) 开启SAVNET目的前缀探测功能
(3) 配置SAVNET接口类型
(4) (可选)BGP SAVNET性能优化
(5) (可选)配置接入场景的SAVNET功能
(6) (可选)配置SAVNET检测仿冒报文日志功能
(7) (可选)配置跨域SAVNET
目前,仅支持直连BGP IPv6 SAVNET对等体之间交互BGP IPv6 SAVNET路由信息,如果创建的是非直连BGP IPv6 SAVNET会话,则无法生成正确的SAVNET表项。所以请使用与BGP IPv6 SAVNET对等体直连接口的IP地址建立BGP IPv6 SAVNET会话。
本步骤涉及命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置SAVNET设备的对等体/对等体组。
peer { group-name | ipv6-address [ prefix-length ] } as-number as-number
(4) 创建BGP IPv6 SAVNET地址族,并进入BGP IPv6 SAVNET地址族视图。
address-family ipv6 savnet
(5) 允许本地设备与指定对等体/对等体组交换BGP IPv6 SAVNET路由信息。
peer { group-name | ipv6-address [ prefix-length ] } enable
缺省情况下,本地设备不能与指定对等体/对等体组交换BGP IPv6 SAVNET路由信息。
(6) 将其他路由协议的路由信息引入到BGP IPv6 SAVNET路由表中,以便SAVNET设备生成并发布SPA路由信息。
import-route { isisv6 | ospfv3 | ripng } [ { process-id | all-processes } [ med med-value | route-policy route-policy-name ] * ]
import-route { bgp4+ ebgp | direct | static | unr } [ med med-value | route-policy route-policy-name ] *
缺省情况下,BGP不会引入其他协议的路由信息。
仅需要产生SPA路由以及DPP路由的SAVNET设备需要配置本步骤。
(7) 配置BGP IPv6 SAVNET路由反射。
a. 配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。
peer { group-name | ipv6-address [ prefix-length ] } reflect-client
b. (可选)允许路由反射器在客户机之间反射路由。
reflect between-clients
c. (可选)配置反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
仅接收SPA路由并需要将其转发的SAVNET设备需要配置本步骤。
(8) 退回系统视图。
quit
(9) 进入接口视图。
interface interface-type interface-number
(10) 对于需要发布出去的SPA路由,在其下一跳出接口上配置SAVNET接口类型为用户侧接口。
ipv6 savnet port-type uni
缺省情况下,未配置SAVNET的接口类型。
只有下一跳出接口为用户侧接口的SPA路由能够被发布给BGP IPv6 SAVNET对等体。
(11) (可选)在用户侧接口上应用IPv6策略,使得设备可以根据该策略生成DPP路由。
ipv6 policy-based-route policy-name [ share-mode ]
缺省情况下,未对接口转发的报文应用IPv6策略。
SAVNET目的前缀探测功能处于关闭状态时,设备只中继转发DPP路由,无法产生始发DPP路由。开启SAVNET目的前缀探测功能后,设备才能产生始发DPP路由。
本功能对代理DPP路由功能无影响,即使SAVNET目的前缀探测功能处于关闭状态时,SAVNET设备也能代理产生DPP路由。
建议配置SAVNET表项的老化时间至少为DPP路由始发设备上配置的DPP路由发送时间间隔的两倍,否则可能由于DPP路由发送间隔过长而导致SAVNET表项被错误地老化删除。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6 SAVNET地址族视图。
address-family ipv6 savnet
(4) 开启SAVNET目的前缀探测功能。
destination-probing enable
缺省情况下,SAVNET目的前缀探测功能处于关闭状态。
开启了SAVNET功能的设备上,支持两种SAVNET接口类型:
· NNI接口:用于连接SAVNET邻居。只有将SAVNET邻居之间相连的接口配置为nni接口,SAVNET表项才能真正生效。
· UNI接口:用于连接用户网络。被引入路由的出接口为通过本命令配置的uni接口时,根据该引用路由生成的SPA路由可以被发布给BGP IPv6 SAVNET对等体。
本功能与SAVA功能互斥,不能同时配置。有关SAVA的详细介绍,请参见“安全配置指导”中的“SAVA”。
本特性仅在三层以太网接口、三层以太网子接口、三层聚合口、三层聚合子接口、VLAN接口和FlexE接口上支持。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置SAVNET接口类型。
ipv6 savnet port-type { nni | uni }
缺省情况下,未配置SAVNET接口类型。
为了适应不同的设备性能和网络环境,SAVNET设备可以通过:
· destination-probing interval命令来配置DPP路由的发送间隔时间,并以本命令指定的时间间隔周期性发送DPP路由。
· savnet-entry expire-time命令来设置SAVNET表项的老化时间。为了避免网络拓扑变化后设备仍维持原有的SAVNET表项从而影响流量转发,通过BGP协议生成的SAVNET表项存在老化时间,需要通过持续收到DPP路由来维持或更新表项,长时间未通过DPP路由维持或更新的SAVNET表项会被设备老化删除。老化时间通过此命令设置。
建议配置SAVNET表项的老化时间至少为DPP路由始发设备上配置的DPP路由发送时间间隔的两倍,否则可能由于DPP路由发送间隔过长而导致SAVNET表项被错误地老化删除。
如果需要发送的DPP路由信息较多,建议不要将DPP路由的发送时间间隔设置得过短,否则可能导致BGP IPv6 SAVNET对等体无法及时处理接收到的DPP路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6 SAVNET地址族视图。
address-family ipv6 savnet
(4) 配置DPP路由的发送间隔时间。
destination-probing interval [ interval ]
缺省情况下,DPP路由的发送间隔时间为3600秒。
(5) 设置SAVNET表项的老化时间。
savnet-entry expire-time time
缺省情况下,SAVNET表项的老化时间为7200秒。
SAVNET表项通过BGP IPv6 SAVNET地址族的路由生成,当SAVNET设备上BGP路由数量过多时,设备需要一段时间来生成所有的SAVNET表项,在此期间,可能会导致部分合法的IPv6报文由于SAVNET表项仍未生成而被错误地丢弃。
为了解决此问题,可以在SAVNET表项生成期间通过undo ipv6 savnet packet-drop enable命令关闭SAVNET仿冒报文丢弃功能,使得SAVNET设备不丢弃不匹配SAVNET表项的报文,减少合法报文的错误丢弃,SAVNET表项全部生成后再通过ipv6 savnet packet-drop enable命令开启SAVNET仿冒报文丢弃功能。
(1) 进入系统视图。
system-view
(2) 关闭SAVNET仿冒报文丢弃功能。
undo ipv6 savnet packet-drop enable
缺省情况下,SAVNET仿冒报文丢弃功能处于开启状态。
SAVNET设备通过发送DPP信息,探测指定目的地址的IPv6报文在域内的转发路径,沿途的SAVNET设备根据DPP信息生成SAVNET表项。通过配置本功能,将SAVNET表项手动下发。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 手动下发SAVNET表项。
ipv6 savnet entry prefix ipv6-address prefix-length
缺省情况下,不存在手动下发的SAVNET表项。
在接入设备上需要执行此配置,以实现无DPP路由环境下的SAVNET表项生成。
如果不同接口配置了相同的接入标签值,则必须也配置相同的接入标签类型。
在配置接口的接入标签前,必须先配置该接口的SAVNET接口类型。取消接口下ipv6 savnet port-type命令的配置前,请先取消接入标签的配置。
如果生成了携带标签信息的SPA路由,则无需将SPA路由对应的IP路由的出接口设置为用户侧接口,该SPA路由也可以被发布出去。
(1) 进入接口视图。
interface interface-type interface-number
(2) 配置接口的SAVNET接入标签。
ipv6 savnet miig-tag tag-value { single-homed | complete-multi-homed }
(3) 创建路由策略,并在该路由策略中通过apply tag命令为路由携带接入标签信息。
本步骤的详细配置方法,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(4) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(5) 进入BGP IPv6 SAVNET地址族视图。
address-family ipv6 savnet
(6) 将其他路由协议的路由信息引入到BGP IPv6 SAVNET路由表中,以便SAVNET设备生成并发布SPA路由信息。
import-route { isisv6 | ospfv3 | ripng } { process-id | all-processes } route-policy route-policy-name
import-route { bgp4+ ebgp | direct | static | unr } route-policy route-policy-name
缺省情况下,BGP不会引入其他协议的路由信息。
本命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“BGP”。
SAVNET检测仿冒报文日志可以方便管理员定位问题和解决问题。当SAVNET检测到仿冒报文时,设备就会生成SAVNET检测仿冒报文日志信息。生成的检测仿冒报文日志信息会交给信息中心模块处理,信息中心模块的配置将决定日志信息的发送规则和发送方向。关于信息中心的详细描述请参见“网络管理和监控配置指导”中的“信息中心”。
大量的日志信息不仅影响设备性能,还影响管理员查看日志和定位问题。用户可以作以下调整:
· 调大SAVNET仿冒报文日志信息输出周期(interval),使得日志信息的输出频率降低。
· 调小每个输出周期输出的SAVNET检测仿冒报文日志数量(number),超过指定的日志数量的日志信息不会被显示。
(1) 进入系统视图。
system-view
(2) 开启SAVNET检测仿冒报文日志功能。
ipv6 savnet log enable spoofing-packet [ interval interval | number number ] *
缺省情况下,SAVNET检测仿冒报文日志功能处于关闭状态。
配置跨域SAVNET前,需要网络管理员先规划出源AS和验证AS的DR,并确保两台DR之间建立了EBGP IPv6 SAVNET会话,以及源AS和验证AS内都完成了域内SAVNET的部署。
配置跨域SAVNET时,需要注意以下限制:
· 源AS和验证AS内,所有非DR设备的ASBR都必须通过peer designate-router命令指定本域内的DR设备,才能正常向DR发布域间DPP信息或者收到DR转发的域间SPA和域间DPP信息。
· 源AS内的所有ASBR(包括DR设备)均需要执行savnet validation-as命令。
· 只能指定IBGP对等体/对等体组为DR,不能指定EBGP对等体/对等体组为DR。
· 配置peer designate-router命令后,会断开与指定对等体/对等体组的会话并重新建立。
· 指定的验证AS号不能与设备的当前AS号相同。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6 SAVNET地址族视图。
address-family ipv6 savnet
(4) 指定DR设备。
peer { group-name | ipv6-address [ prefix-length ] } designate-router
缺省情况下,未指定DR设备。
(5) 配置本地AS作为源AS时的验证AS号。
savnet validation-as { as-number&<1-8> }
缺省情况下,未配置本地AS作为源AS时的验证AS号。
在完成上述配置后,在任意视图下执行display命令可以显示配置后SAVNET的运行情况,通过查看显示信息验证配置的效果。
表1-2 SAVNET显示和维护
操作 |
命令 |
显示SAVNET表项信息 |
(独立运行模式) display ipv6 savnet entry [ [ interface interface-type interface-number ] [ slot slot-number ] | vpn-instance vpn-instance-name ] (IRF模式) display ipv6 savnet entry [ [ interface interface-type interface-number ] [ chassis chassis-number slot slot-number ] | vpn-instance vpn-instance-name ] |
显示SAVNET丢弃报文计数信息 |
display ipv6 savnet packet-drop statistics [ interface interface-type interface-number ] |
显示BGP IPv6 SAVNET地址族下的对等体或对等体组的信息 |
display bgp [ instance instance-name ] peer ipv6 savnet [ ipv6-address prefix-length | { ipv6-address | group-name group-name } log-info | [ ipv6-address ] verbose ] |
显示BGP IPv6 SAVNET对等体组的信息 |
display bgp [ instance instance-name ] group ipv6 savnet [ group-name group-name ] |
显示BGP IPv6 SAVNET地址族的打包组信息。 |
display bgp [ instance instance-name ] update-group ipv6 savnet [ ipv6-address ] |
显示BGP IPv6 SAVNET SPA路由信息 |
display bgp [ instance instance-name ] ipv6 savnet spa [ peer ipv6-address { advertised-routes | received-routes } [ { savnet-route route-length | savnet-prefix } [ verbose ] | statistics ] | route-distinguisher route-distinguisher [ savnet-route route-length | savnet-prefix ] | { savnet-route route-length | savnet-prefix } [ advertise-info ] | statistics ] display bgp [ instance instance-name ] ipv6 savnet spa [ route-distinguisher route-distinguisher ] time-range min-time max-time |
显示BGP IPv6 SAVNET DPP路由信息 |
display bgp [ instance instance-name ] ipv6 savnet dpp [ [ route-distinguisher route-distinguisher ] [ savnet-route route-length | savnet-prefix ] | statistics ] display bgp [ instance instance-name ] ipv6 savnet dpp [ route-distinguisher route-distinguisher ] time-range min-time max-time |
显示能够形成DPP路由的目的前缀信息 |
display bgp [ instance instance-name ] ipv6 savnet prefix [ ipv6-address prefix-length ] display bgp [ instance instance-name ] ipv6 savnet prefix time-range min-time max-time |
显示跨域SAVNET的入口邻居AS信息 |
display bgp [ instance instance-name ] ipv6 savnet ingress-neighbor-as [ validation-as as-number ] |
显示BGP通知SAVNET模块生成的SAVNET表项信息 |
display bgp [ instance instance-name ] ipv6 savnet sav |
清除SAVNET丢弃报文计数信息 |
reset ipv6 savnet packet-drop statistics [ interface interface-type interface-number ] |
软复位BGP IPv6 SAVNET地址族下的BGP会话 |
refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv6 savnet |
复位IPv6 SAVNET地址族下的BGP会话 |
reset bgp [ instance instance-name ] ipv6-address [ prefix-length ] ipv6 savnet |
如图1-9所示,局域网中的合法用户地址前缀为10::/64。在Decice A和Device B上均配置SAVNET功能,满足如下需求:
· Device A和Device B上之间建立SAVNET邻居,通过BGP交互SPA和DPP路由,在Device B上生成相应的SAVNET表项。
· 经由Device A进入SAVNET网络的IPv6报文,将在Device B上基于SAVNET表项进行源地址的合法性检查,对有对应表项的报文会被接收和转发。
图1-9 SAVNET基本组网配置组网图
(1) 配置各接口的IPv6地址。
(2) 配置骨干网域为OSPFv3域,在OSPFv3域中发布Device A和Device B各接口的IPv6地址。配置参见“三层技术-IP路由配置指导”中的OSPFv3”。
(1) 配置Device A
# 配置Ten-GigabitEthernet3/1/1接口类型为UNI,Ten-GigabitEthernet3/1/2接口类型为NNI。
<DeviceA> system-view
[DeviceA] interface ten-gigabitethernet 3/1/1
[DeviceA-Ten-GigabitEthernet3/1/1] ipv6 savnet port-type uni
[DeviceA-Ten-GigabitEthernet3/1/1] ipv6 savnet entry prefix 10:: 64
[DeviceA-Ten-GigabitEthernet3/1/1] quit
[DeviceA] interface ten-gigabitethernet 3/1/2
[DeviceA-Ten-GigabitEthernet3/1/2] ipv6 savnet port-type nni
[DeviceA-Ten-GigabitEthernet3/1/2] quit
# 配置BGP。
[DeviceA] bgp 100
[DeviceA-bgp-defult] router-id 1.1.1.1
[DeviceA-bgp-defult] peer 20::2 as 100
[DeviceA-bgp-defult] address-family ipv6 savnet
[DeviceA-bgp-defult-savnet-ipv6] destination-probing enable
[DeviceA-bgp-defult-savnet-ipv6] peer 20::2 enable
[DeviceA-bgp-defult-savnet-ipv6] import-route direct
[DeviceA-bgp-defult-savnet-ipv6] quit
[DeviceA-bgp-defult] quit
(2) 配置Device B
# 配置SAVNET设备的接口类型。
<DeviceB> system-view
[DeviceB] interface ten-gigabitethernet 3/1/1
[DeviceB-Ten-GigabitEthernet3/1/1] ipv6 savnet port-type nni
# 配置BGP。
[DeviceB] bgp 100
[DeviceB-bgp-defult] router-id 2.2.2.2
[DeviceB-bgp-defult] peer 20::1 as 100
[DeviceB-bgp-defult] address-family ipv6 savnet
[DeviceB-bgp-defult-savnet-ipv6] peer 20::1 enable
[DeviceB-bgp-defult-savnet-ipv6] quit
[DeviceB-bgp-defult] quit
# 在Device B查看接收到的SPA路由简要信息。
[DeviceB] display bgp ipv6 savnet spa
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of SAVNET routes: 1
Total number of routes from all peers: 1
Route distinguisher: 1.1.1.1:0
Total number of routes: 1
* >i Network : [1][1][1.1.1.1][64][10::]/120
NextHop : :: LocPrf : 100
MIIG-Tag: 0 MIIG-Type : 0
MED : 0
Path/Ogn: ?
# 在Device B查看接收到的SPA路由详细信息。
<DeviceB> display bgp ipv6 savnet spa [1][1][1.1.1.1][64][10::]/120
BGP local router ID: 2.2.2.2
Local AS number: 100
Route distinguisher: 1.1.1.1:0
Total number of routes: 1
Paths: 1 available, 1 best
BGP routing table information of [1][1][1.1.1.1][64][10::]/120:
From : 20::1 (1.1.1.1)
Rely nexthop : ::
Original nexthop: ::
Route age : 05h04m52s
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
Source type : local
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Route type : SAVNET SPA
Origin routerID : 1.1.1.1
MIIG-Tag : 0
MIIG-Type : 0
MIIG-Flags : 0
以上信息表明Device B收到了来自Device A的SPA路由,并记录了源前缀10::/64与源Router ID 1.1.1.1的对应关系。
# 在Device B查看接收到的DPP路由简要信息。
<DeviceB> display bgp ipv6 savnet dpp
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of SAVNET routes: 1
Total number of routes from all peers: 1
Route distinguisher: 1.1.1.1:0
Total number of routes: 1
* >i Network : [2][2][1][1.1.1.1][64][30::]/120
NextHop : 0.0.0.0 LocPrf : 100
MED : 0
Path/Ogn: i
# 在Device B查看接收到的DPP路由详细信息。
<DeviceB> display bgp ipv6 savnet dpp [2][2][1][1.1.1.1][64][30::]/120
BGP local router ID: 2.2.2.2
Local AS number: 100
Route distinguisher: 1.1.1.1:0
Total number of routes: 1
Paths: 1 available, 1 best
BGP routing table information of [2][2][1][1.1.1.1][64][30::]/120:
From : 20::1 (1.1.1.1)
Rely nexthop : ::1
Original nexthop: 0.0.0.0
Out interface : NULL0
Route age : 00h01m07s
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0xffffffff
AS-path : (null)
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 32768
State : valid, internal, best
Source type : local
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Route type : SAVNET DPP
Origin routerID : 1.1.1.1
Sequence num : 160
IfIndexIn : 258
In interface : Ten-GigabitEthernet3/1/1
Path RID list : 1.1.1.1
Agent RID list : (null)
以上信息表明Device B收到了来自Device A的DPP路由,路由中携带的源Router ID信息与本地记录的源前缀10::/64对应的源Router ID相同。
# 在Device B查看BGP通知SAVNET模块生成的SAVNET表项信息。
<DeviceB> display bgp ipv6 savnet sav
Total number of routes: 1
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
* >i Network : 10:: PrefixLen : 64
In-Intf : Ten-GigabitEthernet3/1/1
# 在Device B查看SAVNET表项信息是否正确。
<DeviceB> display ipv6 savnet entry
IPv6 savnet entry count: 1
Destination/Prefix length Type Interface VPN instance
10::/64 BGP XGE3/1/1 --
以上信息表示Device B上学到并生成了Device A本地源前缀对应的SAVNET表项。当用户侧的报文经过Device A转发给Device B,Device B上就可以基于SAVNET表项对报文的源地址合法性进行检查。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!