You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenDaylight配置BGP对等连接返回400错误的排查解决方法

问题根因

返回400 Bad Request是多维度配置不符合ODL Oxygen版本BGP模块YANG校验规则导致,具体问题点如下:

  • XML标签闭合错误:提交的XML末尾第二个<protocol>为开标签,未使用闭合标签</protocol>,层级结构不合法
  • RESTCONF请求路径不规范:直接PUT整个protocols容器节点,ODL会校验全量容器下的强制字段,同时存在覆盖其他已有协议配置的风险,触发校验拦截
  • YANG模型必填字段缺失:
    1. BGP邻居(neighbor)节点的config块未显式声明peer-as(iBGP场景同AS号也需填写),也未重复声明key字段neighbor-address
    2. AFI/SAFI节点的config块未填写对应的afi-safi-name,不符合openconfig BGP的YANG结构要求
  • 请求头缺失:未指定RESTCONF要求的载荷类型,默认的application/xml或text/xml无法被ODL的YANG解析器识别

解决方案

按照以下步骤逐一修正即可完成配置下发:

  1. 修正Postman请求头
    添加两个必填头字段,认证方式使用Basic Auth,默认账号密码均为admin:

    • Content-Type: application/yang.data+xml
    • Accept: application/yang.data+xml
  2. 替换请求路径
    不要直接操作整个protocols容器,改为直接操作目标BGP协议实例节点,路径如下(将localhost替换为ODL实际管理IP):

    PUT http://localhost:8181/restconf/config/openconfig-network-instance:network-instances/network-instance=global-bgp/protocols/protocol=bgp-rr,BGP
    

    路径末尾的bgp-rr,BGP对应protocol列表的两个key值:name=bgp-rr、identifier=BGP,直接定位到单实例节点,避免全量校验。

  3. 替换XML配置载荷
    修复标签闭合问题、补全所有必填config块字段,使用以下XML内容:

    <protocol xmlns="http://openconfig.net/yang/network-instance">
       <name>bgp-rr</name>
       <identifier xmlns:x="http://openconfig.net/yang/policy-types">x:BGP</identifier>
       <bgp xmlns="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions">
          <global>
             <config>
                <router-id>172.16.10.3</router-id>
                <as>65500</as>
             </config>
             <afi-safis>
                <afi-safi>
                   <afi-safi-name xmlns:x="http://openconfig.net/yang/bgp-types">x:IPV4-UNICAST</afi-safi-name>
                   <config>
                      <afi-safi-name xmlns:x="http://openconfig.net/yang/bgp-types">x:IPV4-UNICAST</afi-safi-name>
                   </config>
                </afi-safi>
             </afi-safis>
          </global>
          <neighbors>
             <neighbor>
                <neighbor-address>1.1.1.1</neighbor-address>
                <config>
                   <neighbor-address>1.1.1.1</neighbor-address>
                   <peer-as>65500</peer-as>
                </config>
                <route-reflector>
                   <config>
                      <route-reflector-client>true</route-reflector-client>
                   </config>
                </route-reflector>
                <timers>
                   <config>
                      <hold-time>180</hold-time>
                      <connect-retry>5</connect-retry>
                   </config>
                </timers>
                <transport>
                   <config>
                      <remote-port>179</remote-port>
                      <passive-mode>false</passive-mode>
                   </config>
                </transport>
             </neighbor>
          </neighbors>
       </bgp>
    </protocol>
    

配置验证
  • 提交请求后正常返回状态码为201 Created或200 OK
  • 可通过GET请求访问http://localhost:8181/restconf/operational/bgp-rib:bgp-rib/rib=bgp-rr查看BGP RIB运行状态,确认邻居1.1.1.1的会话状态最终进入Established
  • 配置生效后ODL会正常监听179端口,Cisco侧的TCP连接请求不会再返回Connection Refused错误

内容的提问来源于stack exchange,提问作者LUCCA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 05:03:39