下面做的实验就是基于[EVE-NG](http://www.eve-ng.cn/doku.php)模拟平台,在CentOS虚拟机上做
Tungsten Fabric&k8s集成部署,然后启动vMX来做对接。
(编者按:本文着眼于能够对接并对vMX下发配置,如有疑问,欢迎加入社区与开源SDN爱好者们一起交流)
准备
后续对python文件的修改,都需要进入device-manager这个docker进行修改。
修改前记得先备份,例如:
# cp juniper_conf.py juniper_conf.py_bak
[root@master01 ~] # docker restart 001caca78cde
001caca78cde
[root@master01 ~] # tailf /var/log/contrail/contrail-device-manager.log
self._logger.warning(">> password is % s" % self.user_creds[password])
# cd /usr/lib/python2.7/site-packages/device_manager
# cp juniper_conf.py_bak juniper_conf.py
坑一:
描述: Tungsten Fabric5.1.0版本默认对接物理交换机的功能是关闭的。
解决方法:参考微信公众号【TF中文社区】-- 「 Tungsten Fabric入门宝典系列文章 」 ,需要手动添加一项,建议接着删除所有contrail相关的容器后重建。
坑二:
def device_connect( self):
if not self._nc_manager or not self.is_connected():
try:
self._nc_manager = manager.connect(host= self.management_ip, port= 22,
[edit]
netops@ vMX- 3# set system services netconf ssh port 22 ,才好对接
坑三:
04/ 19/ 2020 08: 00: 53 PM [contrail-device-manager] [ ERROR]: could not establish netconf session with router 192.168.122.103: AuthenticationException( 'Authentication failed.',)

def device_connect( self):
if not self._nc_manager or not self.is_connected():
self._logger.warning( ">>keys are %s" % self.user_creds.keys())
self._logger.warning( ">>type of password is %s" % type( self.user_creds[ 'password']))
self._logger.warning( ">>password is %s" % self.user_creds[ 'password'])
try:
self._nc_manager = manager.connect(host= self.management_ip, port= 22,
username= self.user_creds[ 'username'],
#password=self.user_creds['password'],
password= "Test123",
坑四:
netops@vMX-3> show version
Hostname: vMX-3
Model: olive
Junos: 18.2R2.6
因此报错。
04/20/2020 09:02:06 PM [contrail-device-manager] [ERROR]: product model mismatch: device model = olive, plugin mode = [ 'mx', 'vmx']
def validate_device( self):
if not self. device_config:
self.device_config = self.device_get()
if not self. device_config:
self.device_config = {}
return False
#model = self.device_config.get('product-model')
model = 'mx'
坑五:
04/19/2020 09:25:38 PM [contrail-device-manager] [ERROR]: Router 192.168.122.103: error: as_number: 'b'64512'': Use format 'x' or 'x.y' to specify number 'x' ( Range 1 .. 4294967295) or number with higher 2 bytes 'x' ( Range 0 .. 65535) ay
error: syntax error, expecting <rpc> or </rpc>
将conf_str打印出来
self._logger.warning(">>config_str is %s" % config_str)。
解决方法:经过大神指点,将contrail-controller-config-devicemgr镜像从1912-latest替换为1910-laset。
[root@deployer ~] # docker pull opencontrailnightly/contrail-controller-config-devicemgr:1910-latest
[root@deployer ~] # docker tag opencontrailnightly/contrail-controller-config-devicemgr:1910-latest 192.168.122.211/contrail-controller-config-devicemgr:1910-latest
[root@deployer ~] # docker push 192.168.122.211/contrail-controller-config-devicemgr:1910-latest
[root@deployer ~] #
[root@deployer ~] # curl -X GET http://localhost/v2/contrail-controller-config-devicemgr/tags/list --cacert /etc/docker/certs.d/dockershare:2333/ca.crt | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 85 100 85 0 0 1072 0 -- :--:-- -- :--:-- -- :--:-- 1089
{
"name": "contrail-controller-config-devicemgr",
"tags": [
"1912-latest",
"1910-latest"
]
}
[root@deployer ~] #
12345678910111213141516
[root@master01 ~] # ping hub.juniper.net
PING deployer ( 192.168.122.211) 56( 84) bytes of data.
64 bytes from deployer ( 192.168.122.211): icmp_seq= 1 ttl= 64 time= 1.47 ms
^C
--- deployer ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.472/ 1.472/ 1.472/ 0.000 ms
[root@master01 ~] #
[root@master01 ~] # docker pull hub.juniper.net/contrail-controller-config-devicemgr:1910-latest
[root@master01 ~] #
[root@master01 ~] # docker image list | grep devicemgr
hub.juniper.net/contrail-controller-config-devicemgr 1912-latest c08868a27a0a 5 months ago 772MB
hub.juniper.net/contrail-controller-config-devicemgr 1910-latest a1b3ab402efc 5 months ago 862MB
[root@master01 ~] #
1234567891011121314
devicemgr:
image: "hub.juniper.net/contrail-controller-config-devicemgr:1910-latest"
[root@master01 config] # docker-compose -f /etc/contrail/config/docker-compose.yaml down
/usr/ lib/python2 .7/site-packages/requests/__init__.py: 91: RequestsDependencyWarning: urllib3 ( 1.24.3) or chardet ( 2.2.1) doesn 't match a supported version!
RequestsDependencyWarning)
Stopping config_devicemgr_1 ... done
Stopping config_dnsmasq_1 ... done
Stopping config_nodemgr_1 ... done
Stopping config_schema_1 ... done
Stopping config_svcmonitor_1 ... done
Stopping config_stats_1 ... done
Stopping config_api_1 ... done
Removing config_devicemgr_1 ... done
Removing config_dnsmasq_1 ... done
Removing config_nodemgr_1 ... done
Removing config_schema_1 ... done
Removing config_svcmonitor_1 ... done
Removing config_stats_1 ... done
Removing config_api_1 ... done
Removing config_node-init_1 ... done
[root@master01 config] #
[root@master01 config] # docker-compose -f /etc/contrail/config/docker-compose.yaml up -d
/usr/ lib/python2 .7/site-packages/requests/__init__.py: 91: RequestsDependencyWarning: urllib3 ( 1.24.3) or chardet ( 2.2.1) doesn 't match a supported version!
RequestsDependencyWarning)
Creating config_node-init_1 ... done
Creating config_schema_1 ... done
Creating config_api_1 ... done
Creating config_svcmonitor_1 ... done
Creating config_nodemgr_1 ... done
Creating config_dnsmasq_1 ... done
Creating config_stats_1 ... done
Creating config_devicemgr_1 ... done
[root@master01 config] #
1234567891011121314151617181920212223242526272829303132
验证
Physical Router已经添加(role为None)

添加BGP Router
查看vMX上新增配置
netops@vMX-3> show configuration | compare rollback 2
[edit]
+ groups {
+ / * Contrail Generated Group Config */
+ __contrail__ {
+ routing-options {
+ / * Global Routing Options */
+ router-id 3.3.3.3;
+ route-distinguisher-id 3.3.3.3;
+ autonomous-system 64512;
+ dynamic-tunnels {
+ _contrail_asn-64512 {
+ source-address 3.3.3.3;
+ gre;
+ destination-networks {
+ / * IP Fabric Subnet */
+ 192.168.122.0/24;
+ / * BGP Router : MX3 */
+ 3.3.3.3/32;
+ / * BGP Router : master01.local */
+ 192.168.122.177/32;
+ }
+ }
+ }
+ }
+ protocols {
+ / * Protocols Configuration */
+ bgp {
+ / * overlay_bgp: BGP Router: MX3, UUID: 2cf712e4-a3f2-4978-82a3-88c993754202 */
+ group _contrail_asn-64512 {
+ type internal;
+ local-address 3.3.3.3;
+ hold-time 90;
+ family inet-vpn {
+ unicast;
+ }
+ family evpn {
+ signaling;
+ }
+ family route-target;
+ export _contrail_ibgp _export_policy;
+ / * overlay_bgp: BGP Router: master01.local, UUID: b04bc39c-57ea-4f0e-b04a-3d2737ce242f */
+ neighbor 192.168.122.177 {
+ peer-as 64512;
+ }
+ }
+ }
+ }
+ policy-options {
+ / * iBGP Export Policy */
+ policy-statement _contrail_ibgp _export_policy {
+ term inet-vpn {
+ from family inet-vpn;
+ then {
+ next-hop self;
+ }
+ }
+ }
+ }
+ }
+ }
+ apply-groups __contrail__;
netops@vMX-3>
本文为盛科网络刘敬一的原创文章。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69957171/viewspace-2693242/ ,如需转载,请注明出处,否则将追究法律责任。