From 1d210d18c4068c5bdb19dadaafafb1cf53b3970f Mon Sep 17 00:00:00 2001 From: zhangzhihan Date: Thu, 10 Sep 2020 03:22:39 +0800 Subject: [PATCH] update new 20.08 --- deploy.yml | 41 ++++-- install_config/group_vars/adc_global.yml | 88 +++++++++++++ install_config/group_vars/adc_mcn0.yml | 37 ++++++ install_config/group_vars/adc_mcn1.yml | 17 +++ install_config/group_vars/adc_mcn2.yml | 17 +++ install_config/group_vars/adc_mcn3.yml | 17 +++ install_config/group_vars/all.yml | 101 -------------- install_config/group_vars/blade-00.yml | 23 ---- install_config/group_vars/blade-01.yml | 11 -- install_config/group_vars/blade-02.yml | 10 -- install_config/group_vars/blade-03.yml | 10 -- .../group_vars/server_as_tun_mode.yml | 123 ++++++++++++++++++ install_config/hosts | 23 +--- roles/certstore/templates/cert_store.ini.j2 | 2 +- roles/clotho/templates/clotho.conf.j2 | 4 - .../templates/capture_packet_plug.conf.j2 | 6 +- roles/firewall/templates/main.conf.j2 | 26 ++-- ...futils-libelf-devel-0.168-8.el7.x86_64.rpm | Bin 0 -> 38060 bytes .../files/pkgconfig-0.27.1-4.el7.x86_64.rpm | Bin 0 -> 54928 bytes .../files/zlib-devel-1.2.7-17.el7.x86_64.rpm | Bin 0 -> 51044 bytes roles/kernel-ml/tasks/main.yml | 3 + roles/kni/templates/kni.conf.j2 | 20 +-- roles/mrzcpd/tasks/main.yml | 48 +++---- .../{ => ATCA_40G}/mrglobal.conf.ATCA_40G.j2 | 3 +- .../{ => ATCA_40G}/mrtunnat.conf.ATCA_40G.j2 | 0 .../mrglobal.conf.adc_tun_mode.j2 | 7 +- .../mrtunnat.conf.adc_tun_mode.j2 | 11 +- .../mrglobal.conf.allot_access.j2 | 1 + .../mrtunnat.conf.allot_access.j2 | 0 .../mrglobal.conf.inline_device.j2} | 11 +- .../mrtunnat.conf.inline_device.j2 | 18 +++ .../templates/mrglobal.conf.server_inline.j2 | 70 ---------- .../templates/mrglobal.conf.tun_mode.j2 | 28 ---- .../mrzcpd/templates/mrtunnat.conf.inline.j2 | 31 ----- .../mrglobal.conf.traffic_mirror.j2 | 0 roles/sapp/templates/gdev.conf.j2 | 2 +- roles/sapp/templates/sapp.toml.j2 | 8 +- roles/tfe/templates/doh.conf.j2 | 2 +- roles/tfe/templates/future.conf.j2 | 4 +- roles/tfe/templates/pangu_pxy.conf.j2 | 4 +- roles/tfe/templates/tfe-env-config.j2 | 6 +- roles/tfe/templates/tfe.conf.j2 | 22 ++-- roles/tsg-env-tun-mode/templates/setup.j2 | 18 +-- .../templates/tsg-env_stop.j2 | 6 +- 44 files changed, 448 insertions(+), 431 deletions(-) create mode 100644 install_config/group_vars/adc_global.yml create mode 100644 install_config/group_vars/adc_mcn0.yml create mode 100644 install_config/group_vars/adc_mcn1.yml create mode 100644 install_config/group_vars/adc_mcn2.yml create mode 100644 install_config/group_vars/adc_mcn3.yml delete mode 100644 install_config/group_vars/all.yml delete mode 100644 install_config/group_vars/blade-00.yml delete mode 100644 install_config/group_vars/blade-01.yml delete mode 100644 install_config/group_vars/blade-02.yml delete mode 100644 install_config/group_vars/blade-03.yml create mode 100644 install_config/group_vars/server_as_tun_mode.yml create mode 100644 roles/kernel-ml/files/elfutils-libelf-devel-0.168-8.el7.x86_64.rpm create mode 100644 roles/kernel-ml/files/pkgconfig-0.27.1-4.el7.x86_64.rpm create mode 100644 roles/kernel-ml/files/zlib-devel-1.2.7-17.el7.x86_64.rpm rename roles/mrzcpd/templates/{ => ATCA_40G}/mrglobal.conf.ATCA_40G.j2 (98%) rename roles/mrzcpd/templates/{ => ATCA_40G}/mrtunnat.conf.ATCA_40G.j2 (100%) rename roles/mrzcpd/templates/{ => adc_tun_mode}/mrglobal.conf.adc_tun_mode.j2 (95%) rename roles/mrzcpd/templates/{ => adc_tun_mode}/mrtunnat.conf.adc_tun_mode.j2 (62%) rename roles/mrzcpd/templates/{ => allot_access}/mrglobal.conf.allot_access.j2 (99%) rename roles/mrzcpd/templates/{ => allot_access}/mrtunnat.conf.allot_access.j2 (100%) rename roles/mrzcpd/templates/{mrglobal.conf.inline.j2 => inline_device/mrglobal.conf.inline_device.j2} (84%) create mode 100644 roles/mrzcpd/templates/inline_device/mrtunnat.conf.inline_device.j2 delete mode 100644 roles/mrzcpd/templates/mrglobal.conf.server_inline.j2 delete mode 100644 roles/mrzcpd/templates/mrglobal.conf.tun_mode.j2 delete mode 100644 roles/mrzcpd/templates/mrtunnat.conf.inline.j2 rename roles/mrzcpd/templates/{ => traffic_mirror}/mrglobal.conf.traffic_mirror.j2 (100%) diff --git a/deploy.yml b/deploy.yml index 55205d7..bc614cd 100644 --- a/deploy.yml +++ b/deploy.yml @@ -1,11 +1,15 @@ -- hosts: Functional_Host +- hosts: adc_mxn roles: - - framework - - kernel-ml +# - tsg-env-mxn -- hosts: blade-00 +- hosts: adc_mcn0 + vars_files: + - install_config/group_vars/adc_global.yml + - install_config/group_vars/adc_mcn0.yml roles: # - tsg-env-mcn0 + - framework + - kernel-ml - mrzcpd - sapp - tsg_master @@ -17,29 +21,42 @@ - cert-redis - telegraf_statistic -- hosts: blade-01 +- hosts: adc_mcn1 + vars_files: + - install_config/group_vars/adc_global.yml + - install_config/group_vars/adc_mcn1.yml roles: # - tsg-env-mcn1 + - framework + - kernel-ml - mrzcpd - tfe -- hosts: blade-02 +- hosts: adc_mcn2 + vars_files: + - install_config/group_vars/adc_global.yml + - install_config/group_vars/adc_mcn2.yml roles: # - tsg-env-mcn2 + - framework + - kernel-ml - mrzcpd - tfe -- hosts: blade-03 +- hosts: adc_mcn3 + vars_files: + - install_config/group_vars/adc_global.yml + - install_config/group_vars/adc_mcn3.yml roles: # - tsg-env-mcn3 + - framework + - kernel-ml - mrzcpd - tfe -- hosts: blade-mxn - roles: -# - tsg-env-mxn - -- hosts: pc-as-tun-mode +- hosts: server-as-tun-mode + vars_files: + - install_config/group_vars/server_as_tun_mode.yml roles: - kernel-ml - framework diff --git a/install_config/group_vars/adc_global.yml b/install_config/group_vars/adc_global.yml new file mode 100644 index 0000000..cd6e96a --- /dev/null +++ b/install_config/group_vars/adc_global.yml @@ -0,0 +1,88 @@ +######################################### +#####1: Inline_device; 2: Allot; 3: ADC_Tun_mode; +tsg_access_type: 2 +#####2: ADC; +tsg_running_type: 2 + +######################################## +#IP Config +maat_redis_server: + address: "192.168.40.168" + port: 7002 + db: 0 + +dynamic_maat_redis_server: + address: "192.168.40.168" + port: 7002 + db: 0 + +cert_store_server: + address: "192.168.100.1" + port: 9991 + +log_kafkabrokers: + address: "1.1.1.1:9092,2.2.2.2:9092" + +log_minio: + address: "192.168.40.168;" + port: 9090 + +######################################### +#Log Level Config +#日志等级 10:DEBUG 20:INFO 30:FATAL +fw_ftp_log_level: 10 +fw_mail_log_level: 10 +fw_http_log_level: 10 +fw_dns_log_level: 10 +fw_quic_log_level: 10 +capture_packet_log_level: 10 +tsg_log_level: 10 +tsg_master_log_level: 10 +kni_log_level: 10 +tfe_log_level: 10 +tfe_http_log_level: 10 +pangu_log_level: 10 +doh_log_level: 10 +certstore_log_level: 10 + +####################################### +#Sapp Performance Config +#Sapp工作在ADC计算板0时,建议使用如下30+8的配置,以保证更高的处理性能 +sapp: + worker_threads: 30 + send_only_threads_max: 8 + bind_mask: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37 + inbound_route_dir: 1 + +######################################## +#Kni Config +kni: + global: + tfe_node_count: 3 + watch_dog: + switch: 1 + maat: + readconf_mode: 2 + send_logger: + switch: 1 + tfe_nodes: + tfe0_enabled: 1 + tfe1_enabled: 1 + tfe2_enabled: 1 + +######################################## +#Tfe Config +tfe: + nr_threads: 32 + mc_cache_eth: lo + keykeeper: + no_cache: 0 + +######################################## +#Marsio Config +#marsio工作在ADC计算板时,建议使用如下配置,以保证更高的处理性能 +mrzcpd: + iocore: 44,45,46,47 + +mrtunnat: + lcore_id: 40,41,42,43 diff --git a/install_config/group_vars/adc_mcn0.yml b/install_config/group_vars/adc_mcn0.yml new file mode 100644 index 0000000..fa3998e --- /dev/null +++ b/install_config/group_vars/adc_mcn0.yml @@ -0,0 +1,37 @@ +######################################### +#Mcn0管理口网卡名 +nic_mgr: + name: enp6s0 + +######################################### +#Mcn0流量接入网卡,固定配置 +nic_data_incoming: + name: ens1f4 + +######################################### +#Mcn0其他数据口网卡名配置,固定配置 +nic_inner_ctrl: + name: ens1.100 +nic_to_tfe: + tfe0: + name: ens1f5 + tfe1: + name: ens1f6 + tfe2: + name: ens1f7 + +######################################### +#串联设备接入相关配置 +inline_device_config: + ip: 192.168.1.30 + mask: 255.255.255.252 + +######################################### +#Allot接入相关配置 +AllotAccess: + virturlInterface_1: ens1f2.103 + virturlInterface_2: ens1f2.104 + virturlID_1: 103 + virturlID_2: 104 + vvipv4_mask: 24 + vvipv6_mask: 64 diff --git a/install_config/group_vars/adc_mcn1.yml b/install_config/group_vars/adc_mcn1.yml new file mode 100644 index 0000000..d172f7f --- /dev/null +++ b/install_config/group_vars/adc_mcn1.yml @@ -0,0 +1,17 @@ +######################################### +#Mcn1管理口网卡名 +nic_mgr: + name: enp6s0 + +######################################### +#Mcn1流量接入网卡,固定配置 +nic_data_incoming: + name: ens1f1 + +######################################### +#Mcn1其他数据口网卡名配置,固定配置 +nic_inner_ctrl: + name: ens1.100 +nic_traffic_mirror: + name: ens1f2 + use_mrzcpd: 1 diff --git a/install_config/group_vars/adc_mcn2.yml b/install_config/group_vars/adc_mcn2.yml new file mode 100644 index 0000000..4274e70 --- /dev/null +++ b/install_config/group_vars/adc_mcn2.yml @@ -0,0 +1,17 @@ +######################################### +#Mcn2管理口网卡名 +nic_mgr: + name: enp6s0 + +######################################### +#Mcn2流量接入网卡,固定配置 +nic_data_incoming: + name: ens8f1 + +######################################### +#Mcn2其他数据口网卡名配置,固定配置 +nic_inner_ctrl: + name: ens8.100 +nic_traffic_mirror: + name: ens8f2 + use_mrzcpd: 1 diff --git a/install_config/group_vars/adc_mcn3.yml b/install_config/group_vars/adc_mcn3.yml new file mode 100644 index 0000000..9359c76 --- /dev/null +++ b/install_config/group_vars/adc_mcn3.yml @@ -0,0 +1,17 @@ +######################################### +#Mcn3管理口网卡名 +nic_mgr: + name: enp6s0 + +######################################### +#Mcn3流量接入网卡,固定配置 +nic_data_incoming: + name: ens8f1 + +######################################### +#Mcn3其他数据口网卡名配置,固定配置 +nic_inner_ctrl: + name: ens8.100 +nic_traffic_mirror: + name: ens8f2 + use_mrzcpd: 1 diff --git a/install_config/group_vars/all.yml b/install_config/group_vars/all.yml deleted file mode 100644 index 2af7875..0000000 --- a/install_config/group_vars/all.yml +++ /dev/null @@ -1,101 +0,0 @@ -######################################### -#####0: Pcap; 1: Inline_device; 2: Allot; 3: ADC_Tun_mode; 4: ATCA; -tsg_access_type: 4 - -#####0: Tun_mode; 1: normal; 2: ADC; -tsg_running_type: 1 - -#Common combination mode: -#1:Server or PC tun mode: 0 + 0 -#2:Server with Inline device: 1 + 1 -#3:ADC with Inline device: 1 + 2 -#4:ADC with Allot: 2 + 2 -#5:ADC tun mode: 3 + 1 -#6:ATCA: 4 + 1 - -######################################## -maat_redis_server: - address: "192.168.40.168" - port: 7002 - db: 0 - -dynamic_maat_redis_server: - address: "192.168.40.168" - port: 7002 - db: 0 - -cert_store_server: - address: "192.168.100.1" - port: 9991 - -log_kafkabrokers: - address: "1.1.1.1:9092,2.2.2.2:9092" - -log_minio: - address: "192.168.40.168;" - port: 9090 - -fs_remote: - switch: 1 - address: "192.168.100.1" - port: 58125 - -######################################## -sapp: - worker_threads: 16 - send_only_threads_max: 8 - bind_mask: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 - inbound_route_dir: 1 - -######################################## -kni: - global: - log_level: 30 - tfe_node_count: 3 - watch_dog: - switch: 1 - maat: - readconf_mode: 2 - send_logger: - switch: 1 - tfe_nodes: - tfe0_enabled: 1 - tfe1_enabled: 1 - tfe2_enabled: 1 - -######################################## -tfe: - nr_threads: 32 - mc_cache_eth: lo - keykeeper: - no_cache: 0 - -######################################## -mrzcpd: - iocore: 39 - -mrtunnat: - lcore_id: 38 - -#############ATCA config################ -nic_data_incoming: - ethname: enp1s0 - vf0_name: enp1s2 - vf1_name: enp1s2f1 - vf2_name: enp1s2f2 - -VlanFlipping: - vlanID_1: 100 - vlanID_2: 101 - vlanID_3: 103 - vlanID_4: 104 - -#############Server or PC tun mode###### -server: - ethname: eth0 - tun_name: eth0.100 - internal_interface: "eth2" - external_interface: "eth3" - - - diff --git a/install_config/group_vars/blade-00.yml b/install_config/group_vars/blade-00.yml deleted file mode 100644 index d236c2b..0000000 --- a/install_config/group_vars/blade-00.yml +++ /dev/null @@ -1,23 +0,0 @@ -nic_mgr: - name: enp6s0 -nic_data_incoming: - name: ens1f4 - ip: 192.168.1.30 - mask: 255.255.255.252 -nic_inner_ctrl: - name: ens1.100 -nic_to_tfe: - tfe0: - name: ens1f5 - tfe1: - name: ens1f6 - tfe2: - name: ens1f7 - -AllotAccess: - virturlInterface_1: ens1f2.103 - virturlInterface_2: ens1f2.104 - virturlID_1: 103 - virturlID_2: 104 - vvipv4_mask: 24 - vvipv6_mask: 64 diff --git a/install_config/group_vars/blade-01.yml b/install_config/group_vars/blade-01.yml deleted file mode 100644 index baec084..0000000 --- a/install_config/group_vars/blade-01.yml +++ /dev/null @@ -1,11 +0,0 @@ -nic_mgr: - name: enp6s0 -nic_data_incoming: - name: ens1f1 - mac: AA:BB:CC:DD:EE:FF - address: 127.0.0.1 -nic_inner_ctrl: - name: ens1.100 -nic_traffic_mirror: - name: ens1f2 - use_mrzcpd: 1 diff --git a/install_config/group_vars/blade-02.yml b/install_config/group_vars/blade-02.yml deleted file mode 100644 index 0d98ac5..0000000 --- a/install_config/group_vars/blade-02.yml +++ /dev/null @@ -1,10 +0,0 @@ -nic_mgr: - name: enp6s0 -nic_data_incoming: - name: ens8f1 - mac: AA:BB:CC:DD:EE:FF -nic_inner_ctrl: - name: ens8.100 -nic_traffic_mirror: - name: ens8f2 - use_mrzcpd: 1 diff --git a/install_config/group_vars/blade-03.yml b/install_config/group_vars/blade-03.yml deleted file mode 100644 index 0d98ac5..0000000 --- a/install_config/group_vars/blade-03.yml +++ /dev/null @@ -1,10 +0,0 @@ -nic_mgr: - name: enp6s0 -nic_data_incoming: - name: ens8f1 - mac: AA:BB:CC:DD:EE:FF -nic_inner_ctrl: - name: ens8.100 -nic_traffic_mirror: - name: ens8f2 - use_mrzcpd: 1 diff --git a/install_config/group_vars/server_as_tun_mode.yml b/install_config/group_vars/server_as_tun_mode.yml new file mode 100644 index 0000000..41d584b --- /dev/null +++ b/install_config/group_vars/server_as_tun_mode.yml @@ -0,0 +1,123 @@ +######################################### +#####0: Pcap; 1: Inline_device; 4: ATCA; +tsg_access_type: 0 +#####0: Tun_mode; 1: normal; +tsg_running_type: 0 + +######################################## +#Server Basic Config +nic_mgr: + name: eth0 + +nic_inner_ctrl: + name: eth0.100 + +######################################### +#IP Config +maat_redis_server: + address: "192.168.40.168" + port: 7002 + db: 0 + +dynamic_maat_redis_server: + address: "192.168.40.168" + port: 7002 + db: 0 + +cert_store_server: + address: "192.168.100.1" + port: 9991 + +log_kafkabrokers: + address: "1.1.1.1:9092,2.2.2.2:9092" + +log_minio: + address: "192.168.40.168;" + port: 9090 + +######################################### +#Log Level Config +#日志等级 10:DEBUG 20:INFO 30:FATAL +fw_ftp_log_level: 10 +fw_mail_log_level: 10 +fw_http_log_level: 10 +fw_dns_log_level: 10 +fw_quic_log_level: 10 +capture_packet_log_level: 10 +tsg_log_level: 10 +tsg_master_log_level: 10 +kni_log_level: 10 +tfe_log_level: 10 +tfe_http_log_level: 10 +pangu_log_level: 10 +doh_log_level: 10 +certstore_log_level: 10 + +######################################### +#Sapp Performance Config +#如果tsg_access_type=0,sapp跑在pcap模式,则以下配置可忽略 +sapp: + worker_threads: 16 + send_only_threads_max: 8 + bind_mask: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 + inbound_route_dir: 1 + +######################################### +#Sapp Double-Arm Config +packet_io: + internal_interface: eth2 + external_interface: eth3 + + +######################################### +#Kni Config +kni: + global: + tfe_node_count: 1 + watch_dog: + switch: 1 + maat: + readconf_mode: 2 + send_logger: + switch: 1 + tfe_nodes: + tfe0_enabled: 1 + tfe1_enabled: 0 + tfe2_enabled: 0 + +######################################### +#Tfe Config +tfe: + nr_threads: 32 + mc_cache_eth: lo + keykeeper: + no_cache: 0 + +######################################### +#Marsio Config +mrzcpd: + iocore: 39 + +mrtunnat: + lcore_id: 38 + +######################################### +#ATCA Config +#下列配置只在tsg_access_type=4时生效 +nic_data_incoming: + ethname: enp1s0 + vf0_name: enp1s2 + vf1_name: enp1s2f1 + vf2_name: enp1s2f2 + +VlanFlipping: + vlanID_1: 100 + vlanID_2: 101 + vlanID_3: 103 + vlanID_4: 104 + +######################################### +#Inline Device Config +inline_device_config: + ip: 192.168.1.30 + mask: 255.255.255.252 diff --git a/install_config/hosts b/install_config/hosts index 90aab45..0c36bd9 100644 --- a/install_config/hosts +++ b/install_config/hosts @@ -2,25 +2,16 @@ ansible_user=root package_source=local -[pc-as-tun-mode] +[server-as-tun-mode] -[blade-mxn] -1.1.1.1 device_id=1 +[adc_mxn] -[blade-00] -1.1.1.1 device_id=1 vvipv4_1= vvipv4_2= vvipv6_1= vvipv6_2= +[adc_mcn0] -[blade-01] -1.1.1.1 device_id=1 +[adc_mcn1] -[blade-02] -1.1.1.1 device_id=1 +[adc_mcn2] + +[adc_mcn3] -[blade-03] -1.1.1.1 device_id=1 -[Functional_Host:children] -blade-00 -blade-01 -blade-02 -blade-03 diff --git a/roles/certstore/templates/cert_store.ini.j2 b/roles/certstore/templates/cert_store.ini.j2 index 68de7bf..0067391 100644 --- a/roles/certstore/templates/cert_store.ini.j2 +++ b/roles/certstore/templates/cert_store.ini.j2 @@ -2,7 +2,7 @@ #1:print on screen, 0:don't DEBUG_SWITCH = 1 #10:DEBUG, 20:INFO, 30:FATAL -RUN_LOG_LEVEL = 10 +RUN_LOG_LEVEL = {{ certstore_log_level }} RUN_LOG_PATH = ./logs [CONFIG] #Number of running threads diff --git a/roles/clotho/templates/clotho.conf.j2 b/roles/clotho/templates/clotho.conf.j2 index 3644367..b85c316 100644 --- a/roles/clotho/templates/clotho.conf.j2 +++ b/roles/clotho/templates/clotho.conf.j2 @@ -2,10 +2,6 @@ BROKER_LIST={{ log_kafkabrokers.address }} [SYSTEM] -{% if tsg_running_type == 0 or 1 %} -NIC_NAME={{ server.ethname }} -{% else %} NIC_NAME={{ nic_mgr.name }} -{% endif %} LOG_LEVEL=10 LOG_PATH=log/clotho diff --git a/roles/firewall/templates/capture_packet_plug.conf.j2 b/roles/firewall/templates/capture_packet_plug.conf.j2 index 6da4c3c..bea5f89 100644 --- a/roles/firewall/templates/capture_packet_plug.conf.j2 +++ b/roles/firewall/templates/capture_packet_plug.conf.j2 @@ -15,15 +15,11 @@ INC_CFG_DIR=capture_packet_rule/inc/index/ FULL_CFG_DIR=capture_packet_rule/full/index/ [LOG] -{% if tsg_running_type == 0 or 1 %} -NIC_NAME={{ server.ethname }} -{% else %} NIC_NAME={{ nic_mgr.name }} -{% endif %} BROKER_LIST={{ log_kafkabrokers.address }} FIELD_FILE=conf/capture_packet_log_field.conf [SYSTEM] -LOG_LEVEL=10 +LOG_LEVEL={{ capture_packet_log_level }} LOG_PATH=./tsglog/capture_packet_plug/capture_packet diff --git a/roles/firewall/templates/main.conf.j2 b/roles/firewall/templates/main.conf.j2 index 9cbaec8..e67e279 100644 --- a/roles/firewall/templates/main.conf.j2 +++ b/roles/firewall/templates/main.conf.j2 @@ -1,20 +1,24 @@ [FTP_PLUG] LOG_PATH=./tsglog/fw_ftp_plug/fw_ftp_plug -LOG_LEVEL=10 +LOG_LEVEL={{ fw_ftp_log_level }} TIMEOUT=600 [MAIL_PLUG] LOG_PATH=./tsglog/fw_mail_plug/fw_mail_plug -LOG_LEVEL=10 +LOG_LEVEL={{ fw_mail_log_level }} TIMEOUT=600 [HTTP_PLUG] LOG_PATH=./tsglog/fw_http_plug/fw_http_plug -LOG_LEVEL=10 +LOG_LEVEL={{ fw_http_log_level }} [DNS_PLUG] LOG_PATH=./tsglog/fw_dns_plug/fw_dns_plug -LOG_LEVEL=10 +LOG_LEVEL={{ fw_dns_log_level }} + +[QUIC_PLUG] +LOG_PATH=./tsglog/fw_quic_plug/fw_quic_plug +LOG_LEVEL={{ fw_quic_log_level }} [MAAT] PROFILE=./tsgconf/maat.conf @@ -24,32 +28,28 @@ IP_ADDR_TABLE=TSG_SECURITY_ADDR [TSG_LOG] MODE=1 -{% if tsg_running_type == 0 or 1 %} -NIC_NAME={{ server.ethname }} -{% else %} NIC_NAME={{ nic_mgr.name }} -{% endif %} MAX_SERVICE=1 -LOG_LEVEL=10 +LOG_LEVEL={{ tsg_log_level }} LOG_PATH=./tsglog/tsglog BROKER_LIST={{ log_kafkabrokers.address }} COMMON_FIELD_FILE=tsgconf/tsg_log_field.conf [STATISTIC] -CYCLE=1 +CYCLE=5 TELEGRAF_PORT=8100 TELEGRAF_IP=127.0.0.1 OUTPUT_PATH=./tsg_statistic.log APP_NAME=statistic [FIELD_STAT] -CYCLE=3 -TELEGRAF_PORT=8125 +CYCLE=5 +TELEGRAF_PORT=8100 TELEGRAF_IP=127.0.0.1 OUTPUT_PATH=./tsg_stat.log APP_NAME=tsg_master [SYSTEM] -LOG_LEVEL=10 +LOG_LEVEL={{ tsg_master_log_level }} LOG_PATH=./tsglog/tsg_master POLICY_PRIORITY_LABEL=POLICY_PRIORITY diff --git a/roles/kernel-ml/files/elfutils-libelf-devel-0.168-8.el7.x86_64.rpm b/roles/kernel-ml/files/elfutils-libelf-devel-0.168-8.el7.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..b31fff6e7fbe46128370e1c93e3bbabb224df87d GIT binary patch literal 38060 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 G`Tqd3_TpUt literal 0 HcmV?d00001 diff --git a/roles/kernel-ml/files/pkgconfig-0.27.1-4.el7.x86_64.rpm b/roles/kernel-ml/files/pkgconfig-0.27.1-4.el7.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..d37c6010f3d9a6733a8755e37d1f5343a93dcc80 GIT binary patch literal 54928 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 W_{9bhBUh5P>E9dz000003RzlPDY#q! literal 0 HcmV?d00001 diff --git a/roles/kernel-ml/files/zlib-devel-1.2.7-17.el7.x86_64.rpm b/roles/kernel-ml/files/zlib-devel-1.2.7-17.el7.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..fb292226d35eab8599306da1f8483ace1ffaefa0 GIT binary patch literal 51044 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 RinO-r-y8w}0000ASz1BF8p{9x literal 0 HcmV?d00001 diff --git a/roles/kernel-ml/tasks/main.yml b/roles/kernel-ml/tasks/main.yml index 6eb14f3..c71c257 100644 --- a/roles/kernel-ml/tasks/main.yml +++ b/roles/kernel-ml/tasks/main.yml @@ -7,6 +7,9 @@ - name: "install kernels-ml" yum: name: + - /tmp/ansible_deploy/pkgconfig-0.27.1-4.el7.x86_64.rpm + - /tmp/ansible_deploy/zlib-devel-1.2.7-17.el7.x86_64.rpm + - /tmp/ansible_deploy/elfutils-libelf-devel-0.168-8.el7.x86_64.rpm - /tmp/ansible_deploy/kernel/kernel-ml-5.1.8-1.el7.elrepo.x86_64.rpm - /tmp/ansible_deploy/kernel/kernel-ml-devel-5.1.8-1.el7.elrepo.x86_64.rpm - /tmp/ansible_deploy/dkms-2.7.1-1.el7.noarch.rpm diff --git a/roles/kni/templates/kni.conf.j2 b/roles/kni/templates/kni.conf.j2 index 0c84c50..a812b8b 100644 --- a/roles/kni/templates/kni.conf.j2 +++ b/roles/kni/templates/kni.conf.j2 @@ -1,12 +1,8 @@ [global] log_path = ./log/kni/kni.log -log_level = {{ kni.global.log_level }} +log_level = {{ kni_log_level }} tfe_node_count = {{ kni.global.tfe_node_count }} -{% if tsg_running_type == 0 or 1 %} -manage_eth = {{ server.ethname }} -{% else %} manage_eth = {{ nic_mgr.name }} -{% endif %} {% if tsg_running_type == 0 %} deploy_mode = tun {% else %} @@ -38,20 +34,12 @@ ip_addr = 192.168.100.4 {% endif %} [tfe_cmsg_receiver] -{% if tsg_running_type == 0 or 1%} -listen_eth = {{ server.tun_name }} -{% else %} listen_eth = {{ nic_inner_ctrl.name }} -{% endif %} listen_port = 2475 [watch_dog] switch = {{ kni.watch_dog.switch }} -{% if tsg_running_type == 0 or 1 %} -listen_eth = {{ server.tun_name }} -{% else %} listen_eth = {{ nic_inner_ctrl.name }} -{% endif %} listen_port = 2476 keepalive_idle = 2 keepalive_intvl = 1 @@ -87,9 +75,9 @@ mho_expire_time = 0 mho_eliminate_type = LRU [field_stat] -remote_switch = {{ fs_remote.switch }} -remote_ip = {{ fs_remote.address }} -remote_port = {{ fs_remote.port }} +remote_switch = 1 +remote_ip = 127.0.0.1 +remote_port = 8100 local_path = ./fs2_kni.status stat_cycle = 1 print_mode = 1 diff --git a/roles/mrzcpd/tasks/main.yml b/roles/mrzcpd/tasks/main.yml index c15a3b4..1a34666 100644 --- a/roles/mrzcpd/tasks/main.yml +++ b/roles/mrzcpd/tasks/main.yml @@ -14,80 +14,80 @@ src: "{{ role_path }}/templates/mrzcpd.j2" dest: /etc/sysconfig/mrzcpd -- name: "update mrglobal.conf - slave blade" +- name: "update mrglobal.conf - traffic_mirror" template: - src: "{{ role_path }}/templates/mrglobal.conf.traffic_mirror.j2" + src: "{{ role_path }}/templates/traffic_mirror/mrglobal.conf.traffic_mirror.j2" dest: /opt/mrzcpd/etc/mrglobal.conf when: nic_traffic_mirror is defined -- name: "update mrglobal.conf.tun_mode - tun_server" - template: - src: "{{ role_path }}/templates/mrglobal.conf.tun_mode.j2" - dest: /opt/mrzcpd/etc/mrglobal.conf - when: - - tsg_access_type == 0 +#- name: "update mrglobal.conf.tun_mode - tun_server" +# template: +# src: "{{ role_path }}/templates//mrglobal.conf.tun_mode.j2" +# dest: /opt/mrzcpd/etc/mrglobal.conf +# when: +# - tsg_access_type == 0 -- name: "update mrglobal.conf.inline - blade00" +- name: "update mrglobal.conf.inline - mcn0" template: - src: "{{ role_path }}/templates/mrglobal.conf.inline.j2" + src: "{{ role_path }}/templates/inline_device/mrglobal.conf.inline_device.j2" dest: /opt/mrzcpd/etc/mrglobal.conf when: - nic_traffic_mirror is not defined - tsg_access_type == 1 -- name: "update mrglobal.conf.allot - blade00" +- name: "update mrglobal.conf.allot - mcn0" template: - src: "{{ role_path }}/templates/mrglobal.conf.allot_access.j2" + src: "{{ role_path }}/templates/allot_access/mrglobal.conf.allot_access.j2" dest: /opt/mrzcpd/etc/mrglobal.conf when: - nic_traffic_mirror is not defined - tsg_access_type == 2 -- name: "update mrglobal.conf.allot - blade00" +- name: "update mrglobal.conf.adc_tun_mode - mcn0" template: - src: "{{ role_path }}/templates/mrglobal.conf.adc_tun_mode.j2" + src: "{{ role_path }}/templates/adc_tun_mode/mrglobal.conf.adc_tun_mode.j2" dest: /opt/mrzcpd/etc/mrglobal.conf when: - nic_traffic_mirror is not defined - tsg_access_type == 3 -- name: "update mrglobal.conf.ATCA_40G - blade00" +- name: "update mrglobal.conf.ATCA_40G - mcn0" template: - src: "{{ role_path }}/templates/mrglobal.conf.ATCA_40G.j2" + src: "{{ role_path }}/templates/ATCA_40G/mrglobal.conf.ATCA_40G.j2" dest: /opt/mrzcpd/etc/mrglobal.conf when: - nic_traffic_mirror is not defined - tsg_access_type == 4 -- name: "update mrtunnat.conf.inline - blade00" +- name: "update mrtunnat.conf.inline - mcn0" template: - src: "{{ role_path }}/templates/mrtunnat.conf.inline.j2" + src: "{{ role_path }}/templates/inline_device/mrtunnat.conf.inline_device.j2" dest: /opt/mrzcpd/etc/mrtunnat.conf when: - nic_traffic_mirror is not defined - tsg_access_type == 1 -- name: "update mrtunnat.conf.allot_access - blade00" +- name: "update mrtunnat.conf.allot_access - mcn0" template: - src: "{{ role_path }}/templates/mrtunnat.conf.allot_access.j2" + src: "{{ role_path }}/templates/allot_access/mrtunnat.conf.allot_access.j2" dest: /opt/mrzcpd/etc/mrtunnat.conf when: - nic_traffic_mirror is not defined - tsg_access_type == 2 -- name: "update mrtunnat.conf.allot_access - blade00" +- name: "update mrtunnat.conf.adc_tun_mode - mcn0" template: - src: "{{ role_path }}/templates/mrtunnat.conf.adc_tun_mode.j2" + src: "{{ role_path }}/templates/adc_tun_mode/mrtunnat.conf.adc_tun_mode.j2" dest: /opt/mrzcpd/etc/mrtunnat.conf when: - nic_traffic_mirror is not defined - tsg_access_type == 3 -- name: "update mrtunnat.conf.ATCA_40G - blade00" +- name: "update mrtunnat.conf.ATCA_40G - mcn0" template: - src: "{{ role_path }}/templates/mrtunnat.conf.ATCA_40G.j2" + src: "{{ role_path }}/templates/ATCA_40G/mrtunnat.conf.ATCA_40G.j2" dest: /opt/mrzcpd/etc/mrtunnat.conf when: - nic_traffic_mirror is not defined diff --git a/roles/mrzcpd/templates/mrglobal.conf.ATCA_40G.j2 b/roles/mrzcpd/templates/ATCA_40G/mrglobal.conf.ATCA_40G.j2 similarity index 98% rename from roles/mrzcpd/templates/mrglobal.conf.ATCA_40G.j2 rename to roles/mrzcpd/templates/ATCA_40G/mrglobal.conf.ATCA_40G.j2 index 951c9ac..96c417b 100644 --- a/roles/mrzcpd/templates/mrglobal.conf.ATCA_40G.j2 +++ b/roles/mrzcpd/templates/ATCA_40G/mrglobal.conf.ATCA_40G.j2 @@ -12,6 +12,7 @@ vlan-id-allow={{ VlanFlipping.vlanID_1 }},{{ VlanFlipping.vlanID_2 }},{{ VlanFli vlan-pvid=0 vlan-pvid-mode=2 hw_strip_crc=1 +rssmode=3 [device:{{ nic_data_incoming.vf1_name }}] mtu=4096 @@ -28,7 +29,7 @@ sz_buffer=0 [service] # lcore id for i/o service, use comma to split iocore={{ mrzcpd.iocore }} -distmode=2 +distmode=1 hashmode=0 idle_threshold=10000 diff --git a/roles/mrzcpd/templates/mrtunnat.conf.ATCA_40G.j2 b/roles/mrzcpd/templates/ATCA_40G/mrtunnat.conf.ATCA_40G.j2 similarity index 100% rename from roles/mrzcpd/templates/mrtunnat.conf.ATCA_40G.j2 rename to roles/mrzcpd/templates/ATCA_40G/mrtunnat.conf.ATCA_40G.j2 diff --git a/roles/mrzcpd/templates/mrglobal.conf.adc_tun_mode.j2 b/roles/mrzcpd/templates/adc_tun_mode/mrglobal.conf.adc_tun_mode.j2 similarity index 95% rename from roles/mrzcpd/templates/mrglobal.conf.adc_tun_mode.j2 rename to roles/mrzcpd/templates/adc_tun_mode/mrglobal.conf.adc_tun_mode.j2 index fc9600d..3c2fba9 100644 --- a/roles/mrzcpd/templates/mrglobal.conf.adc_tun_mode.j2 +++ b/roles/mrzcpd/templates/adc_tun_mode/mrglobal.conf.adc_tun_mode.j2 @@ -8,9 +8,10 @@ jumbo_frame=1 max_rx_pkt_len=15360 clear_tx_flags=1 vlan-filter=1 -vlan-id-allow=1000,1001,2000,2001,4000,4001 -#vlan-pvid=0 -#vlan-pvid-mode=0 +vlan-id-allow=1000,1001,2000,2001 +vlan-pvid=0 +vlan-pvid-mode=2 +promisc=1 [device:{{nic_to_tfe.tfe0.name}}] jumbo_frame=1 diff --git a/roles/mrzcpd/templates/mrtunnat.conf.adc_tun_mode.j2 b/roles/mrzcpd/templates/adc_tun_mode/mrtunnat.conf.adc_tun_mode.j2 similarity index 62% rename from roles/mrzcpd/templates/mrtunnat.conf.adc_tun_mode.j2 rename to roles/mrzcpd/templates/adc_tun_mode/mrtunnat.conf.adc_tun_mode.j2 index 29d8310..c30d086 100644 --- a/roles/mrzcpd/templates/mrtunnat.conf.adc_tun_mode.j2 +++ b/roles/mrzcpd/templates/adc_tun_mode/mrtunnat.conf.adc_tun_mode.j2 @@ -13,12 +13,9 @@ ctrlzone_addr_info_type=2 [vlan_flipping] enable=1 -c_router_vlan_id_0=4000 -i_router_vlan_id_0=4001 +c_router_vlan_id_0=1000 +i_router_vlan_id_0=1001 en_mac_flipping_0=0 -c_router_vlan_id_1=1000 -i_router_vlan_id_1=1001 +c_router_vlan_id_1=2000 +i_router_vlan_id_1=2001 en_mac_flipping_1=0 -c_router_vlan_id_2=2000 -i_router_vlan_id_2=2001 -en_mac_flipping_2=0 diff --git a/roles/mrzcpd/templates/mrglobal.conf.allot_access.j2 b/roles/mrzcpd/templates/allot_access/mrglobal.conf.allot_access.j2 similarity index 99% rename from roles/mrzcpd/templates/mrglobal.conf.allot_access.j2 rename to roles/mrzcpd/templates/allot_access/mrglobal.conf.allot_access.j2 index d0ba56e..c39f28e 100644 --- a/roles/mrzcpd/templates/mrglobal.conf.allot_access.j2 +++ b/roles/mrzcpd/templates/allot_access/mrglobal.conf.allot_access.j2 @@ -11,6 +11,7 @@ vlan-filter=1 vlan-id-allow={{ AllotAccess.virturlID_1 }},{{ AllotAccess.virturlID_2 }} vlan-pvid=0 vlan-pvid-mode=2 +promisc=1 [device:ens1f5] jumbo_frame=1 diff --git a/roles/mrzcpd/templates/mrtunnat.conf.allot_access.j2 b/roles/mrzcpd/templates/allot_access/mrtunnat.conf.allot_access.j2 similarity index 100% rename from roles/mrzcpd/templates/mrtunnat.conf.allot_access.j2 rename to roles/mrzcpd/templates/allot_access/mrtunnat.conf.allot_access.j2 diff --git a/roles/mrzcpd/templates/mrglobal.conf.inline.j2 b/roles/mrzcpd/templates/inline_device/mrglobal.conf.inline_device.j2 similarity index 84% rename from roles/mrzcpd/templates/mrglobal.conf.inline.j2 rename to roles/mrzcpd/templates/inline_device/mrglobal.conf.inline_device.j2 index fb4aa35..662f13e 100644 --- a/roles/mrzcpd/templates/mrglobal.conf.inline.j2 +++ b/roles/mrzcpd/templates/inline_device/mrglobal.conf.inline_device.j2 @@ -4,16 +4,13 @@ sz_tunnel=8192 sz_buffer=0 [device:{{nic_data_incoming.name}}] -in_addr={{nic_data_incoming.ip}} -in_mask={{nic_data_incoming.mask}} -gateway={{nic_data_incoming.gw}} +in_addr={{inline_device_config.ip}} +in_mask={{inline_device_config.mask}} jumbo_frame=1 max_rx_pkt_len=15360 clear_tx_flags=1 -#vlan-filter=1 -#vlan-id-allow=1301,1302,2301,2302,1501,1502,2501,2502,1601,1602,2601,2602,1701,1702,2701,2702,1801,1802,2801,2802,1901,1902,2901,2902 -#vlan-pvid=0 -#vlan-pvid-mode=0 +vlan-filter=1 +vlan-id-allow=1000,1001 [device:{{nic_to_tfe.tfe0.name}}] jumbo_frame=1 diff --git a/roles/mrzcpd/templates/inline_device/mrtunnat.conf.inline_device.j2 b/roles/mrzcpd/templates/inline_device/mrtunnat.conf.inline_device.j2 new file mode 100644 index 0000000..00b42b5 --- /dev/null +++ b/roles/mrzcpd/templates/inline_device/mrtunnat.conf.inline_device.j2 @@ -0,0 +1,18 @@ +[tunnat] +lcore_id={{ mrtunnat.lcore_id }} +appsym=tunnat +phydev={{nic_data_incoming.name}} +virtdev=vxlan_fwd +nr_max_sessions=524280 +nr_slots=1048576 +expire_time=60 +reverse_tunnel=0 +use_recent_tunnel=0 +use_tuple4_as_sskey=1 +ctrlzone_addr_info_type=2 + +[vlan_flipping] +enable=1 +c_router_vlan_id_0=1000 +i_router_vlan_id_0=1001 +en_mac_flipping_0=0 diff --git a/roles/mrzcpd/templates/mrglobal.conf.server_inline.j2 b/roles/mrzcpd/templates/mrglobal.conf.server_inline.j2 deleted file mode 100644 index fb4aa35..0000000 --- a/roles/mrzcpd/templates/mrglobal.conf.server_inline.j2 +++ /dev/null @@ -1,70 +0,0 @@ -[device] -device={{nic_data_incoming.name}},{{nic_to_tfe.tfe0.name}},{{nic_to_tfe.tfe1.name}},{{nic_to_tfe.tfe2.name}},vxlan_user,vxlan_fwd -sz_tunnel=8192 -sz_buffer=0 - -[device:{{nic_data_incoming.name}}] -in_addr={{nic_data_incoming.ip}} -in_mask={{nic_data_incoming.mask}} -gateway={{nic_data_incoming.gw}} -jumbo_frame=1 -max_rx_pkt_len=15360 -clear_tx_flags=1 -#vlan-filter=1 -#vlan-id-allow=1301,1302,2301,2302,1501,1502,2501,2502,1601,1602,2601,2602,1701,1702,2701,2702,1801,1802,2801,2802,1901,1902,2901,2902 -#vlan-pvid=0 -#vlan-pvid-mode=0 - -[device:{{nic_to_tfe.tfe0.name}}] -jumbo_frame=1 -max_rx_pkt_len=15360 -clear_tx_flags=1 -promisc=1 - -[device:{{nic_to_tfe.tfe1.name}}] -jumbo_frame=1 -max_rx_pkt_len=15360 -clear_tx_flags=1 -promisc=1 - -[device:{{nic_to_tfe.tfe2.name}}] -jumbo_frame=1 -max_rx_pkt_len=15360 -clear_tx_flags=1 -promisc=1 - -[service] -# lcore id for i/o service, use comma to split -iocore={{ mrzcpd.iocore }} -distmode=2 -hashmode=0 - -[eal] -virtaddr=0x7f40c4a00000 -loglevel=7 - -[keepalive] -check_spinlock=0 - -[ctrlzone] -ctrlzone0=tunnat,64 - -[pool] -create_mode=3 -sz_direct_pktmbuf=4194304 -sz_indirect_pktmbuf=8192 -sz_cache=256 -sz_data=4096 - -[forward] -nr_forward_rule=10 -forward_rule_0=pv,{{nic_data_incoming.name}},{{nic_data_incoming.name}} -forward_rule_1=vp,{{nic_data_incoming.name}},{{nic_data_incoming.name}} -forward_rule_2=vv,vxlan_fwd,vxlan_user -forward_rule_3=vv,vxlan_user,vxlan_fwd -forward_rule_4=pv,{{nic_to_tfe.tfe0.name}},{{nic_to_tfe.tfe0.name}} -forward_rule_5=vp,{{nic_to_tfe.tfe0.name}},{{nic_to_tfe.tfe0.name}} -forward_rule_6=pv,{{nic_to_tfe.tfe1.name}},{{nic_to_tfe.tfe1.name}} -forward_rule_7=vp,{{nic_to_tfe.tfe1.name}},{{nic_to_tfe.tfe1.name}} -forward_rule_8=pv,{{nic_to_tfe.tfe2.name}},{{nic_to_tfe.tfe2.name}} -forward_rule_9=vp,{{nic_to_tfe.tfe2.name}},{{nic_to_tfe.tfe2.name}} diff --git a/roles/mrzcpd/templates/mrglobal.conf.tun_mode.j2 b/roles/mrzcpd/templates/mrglobal.conf.tun_mode.j2 deleted file mode 100644 index af2d528..0000000 --- a/roles/mrzcpd/templates/mrglobal.conf.tun_mode.j2 +++ /dev/null @@ -1,28 +0,0 @@ -[device] -device=fake -sz_tunnel=8192 -sz_buffer=0 - -[device:lo] -jumbo_frame=1 -max_rx_pkt_len=15360 -clear_tx_flags=1 -promisc=1 - -[service] -iocore={{ mrzcpd.iocore }} - -[eal] -virtaddr=0x7d0000000000 -loglevel=7 - -[keepalive] -check_spinlock=1 - -[pool] -create_mode=3 -sz_direct_pktmbuf=4194304 -sz_indirect_pktmbuf=8192 -sz_cache=256 -sz_data=4096 - diff --git a/roles/mrzcpd/templates/mrtunnat.conf.inline.j2 b/roles/mrzcpd/templates/mrtunnat.conf.inline.j2 deleted file mode 100644 index 3883aba..0000000 --- a/roles/mrzcpd/templates/mrtunnat.conf.inline.j2 +++ /dev/null @@ -1,31 +0,0 @@ -[tunnat] -lcore_id={{ mrtunnat.lcore_id }} -appsym=tunnat -phydev={{nic_data_incoming.name}} -virtdev=vxlan_fwd -nr_max_sessions=524280 -nr_slots=1048576 -expire_time=60 -reverse_tunnel=0 -use_recent_tunnel=0 -use_tuple4_as_sskey=1 -ctrlzone_addr_info_type=2 - -[vlan_flipping] -enable=1 -c_router_vlan_id_0=3811 -i_router_vlan_id_0=3812 -c_router_vlan_id_1=3813 -i_router_vlan_id_1=3814 -c_router_vlan_id_2=3821 -i_router_vlan_id_2=3822 -c_router_vlan_id_3=3823 -i_router_vlan_id_3=3824 -c_router_vlan_id_4=3831 -i_router_vlan_id_4=3832 -c_router_vlan_id_5=3833 -i_router_vlan_id_5=3834 -c_router_vlan_id_6=3841 -i_router_vlan_id_6=3842 -c_router_vlan_id_7=3843 -i_router_vlan_id_7=3844 diff --git a/roles/mrzcpd/templates/mrglobal.conf.traffic_mirror.j2 b/roles/mrzcpd/templates/traffic_mirror/mrglobal.conf.traffic_mirror.j2 similarity index 100% rename from roles/mrzcpd/templates/mrglobal.conf.traffic_mirror.j2 rename to roles/mrzcpd/templates/traffic_mirror/mrglobal.conf.traffic_mirror.j2 diff --git a/roles/sapp/templates/gdev.conf.j2 b/roles/sapp/templates/gdev.conf.j2 index 245bff5..e5ce624 100644 --- a/roles/sapp/templates/gdev.conf.j2 +++ b/roles/sapp/templates/gdev.conf.j2 @@ -1,5 +1,5 @@ [Module] pcapdevice={{ nic_data_incoming.name }} sendto_gdev_card={{ nic_data_incoming.name }} -sendto_gdev_ip={{ nic_data_incoming.ip }} +sendto_gdev_ip={{ inline_device_config.ip }} gdev_status_switch=1 diff --git a/roles/sapp/templates/sapp.toml.j2 b/roles/sapp/templates/sapp.toml.j2 index f7febdf..57d4283 100644 --- a/roles/sapp/templates/sapp.toml.j2 +++ b/roles/sapp/templates/sapp.toml.j2 @@ -47,7 +47,7 @@ BSD_packet_filter="" [packet_io.internal.interface] {% if tsg_access_type == 0 %} type=pcap - name={{server.internal_interface}} + name={{packet_io.internal_interface}} {% else %} type=marsio name=vxlan_user @@ -56,7 +56,7 @@ BSD_packet_filter="" [packet_io.external.interface] {% if tsg_access_type == 0 %} type=pcap - name={{server.external_interface}} + name={{packet_io.external_interface}} {% else %} type=pcap name=lo @@ -108,8 +108,8 @@ BSD_packet_filter="" [profiling.log.remote] enabled=1 - server_ip={{ fs_remote.address }} - server_port={{ fs_remote.port }} + server_ip=127.0.0.1 + server_port=8100 [profiling.log.remote.field_stat2] ### note, is valid when "remote_send_out_type=field_stat2" diff --git a/roles/tfe/templates/doh.conf.j2 b/roles/tfe/templates/doh.conf.j2 index 300e584..69398af 100644 --- a/roles/tfe/templates/doh.conf.j2 +++ b/roles/tfe/templates/doh.conf.j2 @@ -7,7 +7,7 @@ enable=1 # RLOG_LV_DEBUG : 10 # RLOG_LV_INFO : 20 # RLOG_LV_FATAL : 30 -log_level=10 +log_level={{ doh_log_level }} [maat] # default TSG_OBJ_APP_ID diff --git a/roles/tfe/templates/future.conf.j2 b/roles/tfe/templates/future.conf.j2 index 078a6fc..d0d7c07 100644 --- a/roles/tfe/templates/future.conf.j2 +++ b/roles/tfe/templates/future.conf.j2 @@ -1,5 +1,5 @@ [STAT] no_stats=0 -statsd_server={{ fs_remote.address }} -statsd_port={{ fs_remote.port }} +statsd_server=127.0.0.1 +statsd_port=8100 histogram_bins=0.50,0.80,0.9,0.95 diff --git a/roles/tfe/templates/pangu_pxy.conf.j2 b/roles/tfe/templates/pangu_pxy.conf.j2 index 26d8d15..cf740ec 100644 --- a/roles/tfe/templates/pangu_pxy.conf.j2 +++ b/roles/tfe/templates/pangu_pxy.conf.j2 @@ -1,7 +1,9 @@ [debug] -log_level=10 +log_level={{ pangu_log_level }} [log] +# default 1, if enable "en_sendlog", the iterm "tfe.conf [kafka] enable" must set 1 +en_sendlog=1 entrance_id=0 #Addresses of minio. Format is defined by WiredLB. diff --git a/roles/tfe/templates/tfe-env-config.j2 b/roles/tfe/templates/tfe-env-config.j2 index 172ef12..500e25f 100644 --- a/roles/tfe/templates/tfe-env-config.j2 +++ b/roles/tfe/templates/tfe-env-config.j2 @@ -1,5 +1,5 @@ {% if tsg_access_type == 4 %} -TFE_DEVICE_DATA_INCOMING={ nic_data_incoming.vf2_name }} +TFE_DEVICE_DATA_INCOMING={{ nic_data_incoming.vf2_name }} {% elif tsg_running_type == 0 %} TFE_DEVICE_DATA_INCOMING=tun_kni {% else %} @@ -14,7 +14,7 @@ TFE_PEER_MAC_DATA_INCOMING=aa:bb:cc:dd:ee:ff TFE_LOCAL_IP_DATA_INCOMING=172.16.241.2 TFE_PEER_IP_DATA_INCOMING=172.16.241.1 -{% if tsg_running_type == 0 or 1 %} -TFE_WATCHDOG_DEVICE={{ server.tun_name }} +{% if tsg_running_type == 0 %} +TFE_WATCHDOG_DEVICE={{ nic_inner_ctrl.name }} TFE_WATCHDOG_IP=192.168.100.1 {% endif %} diff --git a/roles/tfe/templates/tfe.conf.j2 b/roles/tfe/templates/tfe.conf.j2 index fc38c69..a8770a3 100644 --- a/roles/tfe/templates/tfe.conf.j2 +++ b/roles/tfe/templates/tfe.conf.j2 @@ -32,11 +32,7 @@ service_cache_expire_seconds=600 # default 0 mc_cache_enable=1 # default eth0 -{% if tsg_running_type == 0 or 1 %} -mc_cache_eth={{ server.tun_name }} -{% else %} mc_cache_eth={{ nic_inner_ctrl.name }} -{% endif %} # default NULL mc_cache_broker_list={{ log_kafkabrokers.address }} # default PXY-EXCH-INTERMEDIA-CERT @@ -59,12 +55,14 @@ enable_health_check=1 passthrough_all_tcp=0 [traffic_mirror] -{% if tsg_running_type == 0 or 1 %} +{% if tsg_running_type == 0 %} device=lo +type=0 {% else %} device={{ nic_traffic_mirror.name }} +type=1 {% endif %} -type=0 + [ratelimit] #read_rate=200000 @@ -82,25 +80,21 @@ tcp_ttl_upstream=75 tcp_ttl_downstream=70 [log] -level=10 +level={{ tfe_log_level }} [stat] -statsd_server={{ fs_remote.address }} -statsd_port={{ fs_remote.port }} +statsd_server=127.0.0.1 +statsd_port=8100 statsd_cycle=5 # FS_OUTPUT_STATSD=1, FS_OUTPUT_INFLUX_LINE=2 statsd_format=2 [http] -loglevel=10 +loglevel={{ tfe_http_log_level }} [kafka] enable=1 -{% if tsg_running_type == 0 or 1 %} -nic_name={{ server.ethname }} -{% else %} nic_name={{ nic_mgr.name }} -{% endif %} kafka_brokerlist={{ log_kafkabrokers.address }} kafka_topic=PROXY-EVENT-LOG device_id_filepath=/opt/tsg/etc/tsg_sn.json diff --git a/roles/tsg-env-tun-mode/templates/setup.j2 b/roles/tsg-env-tun-mode/templates/setup.j2 index f5aa26f..c0f0d51 100644 --- a/roles/tsg-env-tun-mode/templates/setup.j2 +++ b/roles/tsg-env-tun-mode/templates/setup.j2 @@ -1,15 +1,15 @@ #!/bin/bash modprobe 8021q -vconfig add {{ server.ethname }} 100 -vconfig set_flag {{ server.ethname }}.100 1 1 -ifconfig {{ server.ethname }}.100 192.168.100.1 netmask 255.255.255.0 up +vconfig add {{ nic_mgr.name }} 100 +vconfig set_flag {{ nic_mgr.name }}.100 1 1 +ifconfig {{ nic_mgr.name }}.100 192.168.100.1 netmask 255.255.255.0 up {% if tsg_access_type == 0 %} -ethtool -K {{ server.internal_interface }} tso off -ethtool -K {{ server.internal_interface }} gso off -ethtool -K {{ server.internal_interface }} gro off -ethtool -K {{ server.external_interface }} tso off -ethtool -K {{ server.external_interface }} gso off -ethtool -K {{ server.external_interface }} gro off +ethtool -K {{ packet_io.internal_interface }} tso off +ethtool -K {{ packet_io.internal_interface }} gso off +ethtool -K {{ packet_io.internal_interface }} gro off +ethtool -K {{ packet_io.external_interface }} tso off +ethtool -K {{ packet_io.external_interface }} gso off +ethtool -K {{ packet_io.external_interface }} gro off {% elif tsg_access_type == 4 %} echo 3 > /sys/class/net/{{ nic_data_incoming.ethname }}/device/sriov_numvfs ip link set {{ nic_data_incoming.ethname }} vf 1 vlan 4095 diff --git a/roles/tsg-env-tun-mode/templates/tsg-env_stop.j2 b/roles/tsg-env-tun-mode/templates/tsg-env_stop.j2 index 8d7a9ce..a227ebd 100644 --- a/roles/tsg-env-tun-mode/templates/tsg-env_stop.j2 +++ b/roles/tsg-env-tun-mode/templates/tsg-env_stop.j2 @@ -1,8 +1,8 @@ #!/bin/bash # -echo 0 >/sys/class/net/{{ server.ethname }}/device/sriov_numvfs -ifconfig {{ server.ethname }}.100 down -vconfig rem {{ server.ethname }}.100 +echo 0 >/sys/class/net/{{ nic_mgr.name }}/device/sriov_numvfs +ifconfig {{ nic_mgr.name }}.100 down +vconfig rem {{ nic_mgr.name }}.100 {% if tsg_access_type == 4 %} echo 0 >/sys/class/net/{{ nic_data_incoming.ethname }}/device/sriov_numvfs {% endif %}