вторник, 10 апреля 2018 г.

Projetando sistemas de negociação de baixa latência


Projetando sistemas de negociação de baixa latência
Todo o tempo que você ouve sobre negociação de alta frequência (HFT) e quão rápido os algoritmos são. Mas eu estou querendo saber - o que é rápido nos dias de hoje?
Eu não estou pensando sobre a latência causada pela distância física entre uma troca e o servidor executando um aplicativo de negociação, mas a latência introduzida pelo próprio programa.
Para ser mais específico: Qual é o tempo decorrido entre os eventos que chegam na conexão em um aplicativo para esse aplicativo e que geram um pedido / preço no fio? Ou seja hora do tick-to-trade.
Estamos falando de sub-milissegundo? Ou sub-microssegundo?
Como as pessoas alcançam essas latências? Codificação em montagem? FPGAs? Código C ++ de boa qualidade?
Recentemente foi publicado um artigo interessante sobre o ACM, fornecendo muitos detalhes sobre a tecnologia HFT de hoje, que é uma excelente leitura:
Você recebeu respostas muito boas. Há um problema, porém - a maioria dos algotrading é secreta. Você simplesmente não sabe o quão rápido é. Isto vai nos dois sentidos - alguns podem não dizer o quão rápido eles trabalham, porque eles não querem. Outros podem, digamos exagerar, por muitas razões (atrair investidores ou clientes, por exemplo).
Rumores sobre picossegundos, por exemplo, são bastante escandalosos. 10 nanossegundos e 0,1 nanossegundos são exatamente a mesma coisa, porque o tempo que leva para que a ordem chegue ao servidor de negociação é muito mais do que isso.
E, mais importante, embora não seja o que você pediu, se você tentar negociar algoritmicamente, não tente ser mais rápido, tente ser mais inteligente. Eu já vi algoritmos muito bons que podem aguentar segundos inteiros de latência e ganhar muito dinheiro.
Sou o CTO de uma pequena empresa que fabrica e vende sistemas HFT baseados em FPGA. Construindo nossos sistemas no topo do Solarine Application Onload Engine (AOE) temos consistentemente entregando latência de um evento de mercado "interessante" na rede (10 Gb / S de dados de mercado UDP do ICE ou CME) para o primeiro byte do mensagem de pedido resultante que atinge o fio na faixa de 750 a 800 nanossegundos (sim, sub-microssegundo). Prevemos que nossos sistemas de próxima versão estarão na faixa de nanosegundos de 704 a 710. Algumas pessoas reclamaram um pouco menos, mas isso é em um ambiente de laboratório e não na verdade sentado em um COLO em Chicago e limpando os pedidos.
Os comentários sobre física e "velocidade da luz" são válidos, mas não relevantes. Todo mundo que é sério sobre a HFT tem seus servidores em um COLO na sala ao lado do servidor da bolsa.
Para entrar neste domínio sub-microssegundo você não pode fazer muito na CPU hospedeira exceto comandos de implementação da estratégia de alimentação para o FPGA, mesmo com tecnologias como bypass do kernel você tem 1.5 microssegundos de sobrecarga inevitável. então neste domínio tudo está jogando com FPGAs.
Uma das outras respostas é muito honesta ao dizer que neste mercado altamente sigiloso poucas pessoas falam sobre as ferramentas que usam ou seu desempenho. Cada um de nossos clientes exige que não digamos a ninguém que eles usam nossas ferramentas nem divulgam nada sobre como eles os utilizam. Isso não só dificulta o marketing, mas também impede o bom fluxo de conhecimento técnico entre os pares.
Devido a esta necessidade de entrar em sistemas exóticos para a parte "perversa e rápida" do mercado, você descobrirá que os Quants (as pessoas que criam os algoritmos que fazemos rapidamente) estão dividindo seus algos em eventos-para - camadas de tempo de resposta. No topo da pilha de tecnologia estão os sistemas de sub-microssegundos (como o nosso). A próxima camada são os sistemas C ++ personalizados que fazem uso pesado do bypass do kernel e estão no intervalo de 3-5 microssegundos. A próxima camada são as pessoas que não podem se dar ao luxo de estar em um fio de 10Gb / S apenas um roteador hop da "troca", eles podem ainda estar no COLO, mas por causa de um jogo desagradável que chamamos de "roleta de porta" eles estão no dezenas a centenas de microssegundos. Uma vez que você entra em milissegundos, quase não é mais HFT.

Projetando sistemas de negociação de baixa latência
Cambridge, UK & ndash; 23 de junho de 2014 & ndash; A Argon Design, uma empresa de serviços de design especializada em sistemas digitais complexos anunciou hoje que desenvolveu um sistema de negociação financeira de baixíssima latência para uma trading proprietária que faz arbitragem de latência em uma das principais bolsas de valores das Américas.
A plataforma de negociação completa que inclui funções de ingestão de dados de mercado em tempo real por meio de suporte de algoritmo à colocação de pedidos baseada em FIXs entrou em operação em maio de 2014. Ela se baseia nos resultados pioneiros que a Argon anunciou em setembro de 2013 para trading de alto desempenho usando um design híbrido de FPGA e tecnologias x86. Isso combina caminhos rápidos implementados no FPGA para oferecer respostas de escala para troca de nível de nanossegundos a eventos importantes, juntamente com a configuração de oportunidade, a determinação de parâmetros e o gerenciamento do sistema em um servidor x86 de alto desempenho.
O melhor hardware da categoria compreende um servidor Supermicro Hyper-Speed ​​com dois processadores Intel Xeon E5 montados e fornecidos pela Bios IT, bem como um switch Arista 7124FX com FPGA Stratix V integrado.
A lógica do FPGA usa várias técnicas de otimização desenvolvidas pela Argon para maximizar a vantagem de velocidade. Estes incluem análise em linha, antecipação, inferência e arbitragem de gateway. Para potencializar as várias técnicas de inferência, o FPGA inclui lógica complexa para construir e manter livros de pedidos e estatísticas. A análise FAST / FIX é feita em no máximo 64ns e a construção de pedidos é concluída em 32ns. Para as interfaces de rede de menor latência, o sistema usa o Tamba Networks & rsquo; latência de terminal 1G MAC.
O sócio-gerente da trading comentou: "À medida que as bolsas se tornam mais deterministas, é importante ter uma plataforma que ofereça uma vantagem de velocidade, bem como estratégias de negociação inteligentes. O sistema Argon nos deu essa vantagem".
Steve Barlow, CTO da Argon Design comentou: "O comércio de alto desempenho continua ativo em todos os mercados mundiais. Como se tornar mais nicho, a vitória precisará de acesso a tecnologias de alto desempenho e às habilidades para selecionar e montar as peças necessárias." Acreditamos nos detalhes da engenharia especializada - cada cliente é diferente e, portanto, desenvolvemos sistemas sob medida que dão a vantagem vital. "
A Argon Design foi fundada em 2009 e opera no coração do renomado Cambridge Technology Cluster, com acesso aos mercados & rsquo; intelecto líder. No setor de negociação financeira, a Argon Design auxilia equipes internas, fornecendo habilidades especializadas ou recursos adicionais para projetos, bem como projetos sob medida em áreas como:
Arquitetura de sistema de hardware e software heterogêneo Design e produção de appliance Desenvolvimento / programação baseada em FPGA Design de hardware e software de processador de núcleo múltiplo usando Tilera, Intel e outros Rede processando desenvolvimento / programação de GPU e OpenCL.
Para mais informações, visite: argondesign.

11 Melhores práticas para sistemas de baixa latência.
Já faz 8 anos desde que o Google notou que um acréscimo de 500 ms de latência reduziu o tráfego em 20% e a Amazon percebeu que os 100ms de latência extra diminuíram as vendas em 1%. Desde então, os desenvolvedores têm corrido para o fim da curva de latência, culminando em desenvolvedores front-end apertando até o último milésimo de segundo em JavaScript, CSS e até HTML. O que se segue é um passeio aleatório através de uma variedade de práticas recomendadas para manter em mente ao projetar sistemas de baixa latência. A maioria dessas sugestões é levada ao extremo lógico, mas é claro que compensações podem ser feitas. (Obrigado a um usuário anônimo por fazer essa pergunta no Quora e fazer com que eu descreva por escrito).
Escolha o idioma certo.
Linguagens de script não precisam ser aplicadas. Embora eles continuem sendo cada vez mais rápidos, quando você está tentando reduzir os últimos milésimos de segundo do seu tempo de processamento, não pode ter a sobrecarga de uma linguagem interpretada. Além disso, você vai querer um modelo de memória forte para permitir a programação livre de bloqueio, então você deve estar olhando para Java, Scala, C ++ 11 ou Go.
Guarde tudo na memória.
AE / S matará sua latência, portanto, verifique se todos os seus dados estão na memória. Isso geralmente significa gerenciar suas próprias estruturas de dados na memória e manter um log persistente, para que você possa reconstruir o estado após a reinicialização de uma máquina ou processo. Algumas opções para um log persistente incluem Bitcask, Krati, LevelDB e BDB-JE. Como alternativa, você pode conseguir executar um banco de dados local persistente na memória, como redis ou MongoDB (com dados de memória & gt; & gt;). Observe que você pode perder alguns dados no travamento devido à sincronização em segundo plano com o disco.
Mantenha dados e processando colocated.
Os saltos de rede são mais rápidos do que as buscas de disco, mas mesmo assim eles adicionam muita sobrecarga. Idealmente, seus dados devem caber inteiramente na memória de um host. Com a AWS fornecendo quase 1/4 TB de RAM na nuvem e servidores físicos oferecendo vários TBs, isso geralmente é possível. Se você precisar executar em mais de um host, certifique-se de que seus dados e solicitações sejam particionados adequadamente para que todos os dados necessários para atender a uma determinada solicitação estejam disponíveis localmente.
Mantenha o sistema subutilizado.
A baixa latência requer sempre recursos para processar a solicitação. Não tente executar no limite do que seu hardware / software pode fornecer. Sempre tem muita sala de cabeça para rajadas e depois alguns.
Mantenha as opções de contexto no mínimo.
Interruptores de contexto são um sinal de que você está fazendo mais trabalho de computação do que você tem recursos para. Você desejará limitar o número de threads ao número de núcleos em seu sistema e fixar cada thread em seu próprio núcleo.
Mantenha suas leituras sequenciais.
Todas as formas de armazenamento, independentemente de serem rotacionais, baseadas em flash ou memória, são significativamente melhores quando usadas sequencialmente. Ao emitir leituras seqüenciais para a memória, você aciona o uso da pré-busca no nível da RAM, bem como no nível do cache da CPU. Se feito corretamente, o próximo dado que você precisa estará sempre no cache L1 antes de você precisar. A maneira mais fácil de ajudar esse processo é fazer uso intenso de matrizes de tipos de dados primitivos ou estruturas. Os indicadores a seguir, seja pelo uso de listas vinculadas ou por meio de matrizes de objetos, devem ser evitados a todo custo.
Lote suas gravações.
Isso parece contra-intuitivo, mas você pode obter melhorias significativas no desempenho por meio de gravações em lote. No entanto, há um equívoco de que isso significa que o sistema deve aguardar uma quantidade arbitrária de tempo antes de fazer uma gravação. Em vez disso, um thread deve girar em um loop apertado fazendo I / O. Cada gravação agrupará todos os dados que chegaram desde a última gravação. Isso contribui para um sistema muito rápido e adaptável.
Respeite seu cache.
Com todas essas otimizações, o acesso à memória rapidamente se torna um gargalo. A fixação de threads em seus próprios núcleos ajuda a reduzir a poluição do cache da CPU e a E / S sequencial também ajuda a pré-carregar o cache. Além disso, você deve manter os tamanhos de memória baixos usando tipos de dados primitivos para que mais dados caibam no cache. Além disso, você pode examinar os algoritmos alheios ao cache que funcionam dividindo os dados recursivamente até que eles caibam no cache e, em seguida, executem qualquer processamento necessário.
Não bloqueando tanto quanto possível.
Faça amigos com o não bloqueio e aguarde estruturas e algoritmos de dados livres. Toda vez que você usa um bloqueio, você precisa descer a pilha para o sistema operacional para mediar o bloqueio, o que é uma enorme sobrecarga. Muitas vezes, se você sabe o que está fazendo, pode contornar os bloqueios entendendo o modelo de memória da JVM, C ++ 11 ou Go.
Assíncrono, tanto quanto possível.
Qualquer processamento e, particularmente, qualquer I / O que não seja absolutamente necessário para construir a resposta deve ser feito fora do caminho crítico.
Paralelize o máximo possível.
Qualquer processamento e, particularmente, qualquer E / S que possa acontecer em paralelo, deve ser feito em paralelo. Por exemplo, se sua estratégia de alta disponibilidade incluir transações de log em disco e enviar transações para um servidor secundário, essas ações podem ocorrer em paralelo.
Quase tudo isso vem de seguir o que a LMAX está fazendo com seu projeto Disruptor. Leia sobre isso e siga qualquer coisa que Martin Thompson faça.
Compartilhar isso:
Publicado por.
Benjamin Darfler.
29 pensamentos sobre “11 Melhores Práticas para Sistemas de Baixa Latência”;
E feliz por estar na sua lista 🙂
Bom artigo. Um beef: Go não possui um modelo de memória sofisticado como o Java ou o C ++ 11. Se o seu sistema se encaixa na rotina Go-Routing e nos canais, é tudo muito bom, sem sorte. AFAIK não é possível desativar o planejador de tempo de execução, portanto, não há encadeamentos nativos do sistema operacional e a capacidade de criar suas próprias estruturas de dados livres de bloqueio, como (filas / buffers de anel do SPSC), também estão gravemente ausentes.
Obrigado pela resposta. Embora o modelo de memória Go (golang / ref / mem) possa não ser tão robusto quanto o Java ou C ++ 11, fiquei com a impressão de que você ainda poderia criar estruturas de dados livres de bloqueio usando-o. Por exemplo, github / textnode / gringo, github / scryner / lfreequeue e github / mocchira / golfhash. Talvez eu esteja perdendo alguma coisa? É certo que eu sei muito menos sobre o Go do que a JVM.
Benjamin, o modelo de memória Go detalhado aqui: golang / ref / mem é principalmente em termos de canais e exclusões mútuas. Eu olhei através dos pacotes que você listou e enquanto as estruturas de dados existem "lock free & # 8221; eles não são equivalentes ao que se pode construir em Java / C ++ 11. O pacote de sincronização a partir de agora, não tem suporte para atomics relaxado ou a semântica de adquirir / liberar do C ++ 11. Sem esse suporte, é difícil construir estruturas de dados SPSC tão eficientes quanto as possíveis em C ++ / Java. Os projetos que você vincula usam atomic. Add & # 8230; que é um atômico sequencialmente consistente. Ele é construído com XADD como deveria ser & # 8211; github / tonnerre / golang / blob / mestre / src / pkg / sync / atomic / asm_amd64.s.
Eu não estou tentando derrubar o Go down. É necessário um esforço mínimo para escrever I / O assíncrono e simultâneo.
código que é suficientemente rápido para a maioria das pessoas. A biblioteca std também é altamente ajustada para desempenho. Golang também tem suporte para estruturas que estão faltando em Java. Mas, do jeito que está, acho que o modelo de memória simplista e o tempo de execução da rotina ficam no caminho da construção do tipo de sistema sobre o qual você está falando.
Obrigado pela resposta em profundidade. Espero que as pessoas achem isso útil.
Enquanto um & # 8216; nativo & # 8217; a língua é provavelmente melhor, não é estritamente necessária. O Facebook nos mostrou que isso pode ser feito em PHP. Concedido que eles usam PHP pré-compilado com sua máquina HHVM. Mas é possível!
Infelizmente, o PHP ainda não possui um modelo de memória aceitável, mesmo se o HHVM melhorar significativamente a velocidade de execução.
Enquanto eu luto para usar idiomas de nível mais alto tanto quanto o próximo, acho que a única maneira de alcançar os aplicativos de baixa latência que as pessoas estão procurando é cair para uma linguagem como C. Parece que mais difícil é escrever em um idioma, quanto mais rápido ele é executado.
Eu recomendo fortemente que você olhe para o trabalho que está sendo feito nos projetos e blogs aos quais eu me vinculei. A JVM está se tornando rapidamente o ponto de acesso para esses tipos de sistemas, pois fornece um modelo de memória e coleta de lixo robustos que permitem a programação livre de bloqueios que é quase impossível com um modelo de memória fraco e indefinido e contadores de referência para gerenciamento de memória.
Vou dar uma olhada, Benjamin. Obrigado por indicá-los.
A coleta de lixo para programação sem bloqueio é um pouco de deus ex machina. As filas de MPMC e SPSC podem ser construídas sem necessidade de GC. Há também muitas maneiras de fazer a programação livre de bloqueios sem coleta de lixo e a contagem de referência não é o único caminho. Ponteiros de perigo, RCU, Proxy-Collectors etc todos fornecem suporte para recuperação diferida e geralmente são codificados em suporte de um algoritmo (não genérico), portanto, eles são geralmente muito mais fáceis de construir. É claro que o trade-off está no fato de que os GC de qualidade de produção têm muito trabalho neles e ajudarão os programadores menos experientes a escrever algoritmos livres de bloqueio (eles deveriam estar fazendo isso?) Sem codificar esquemas de recuperação diferidos. . Alguns links sobre o trabalho realizado neste campo: cs. toronto. edu/
Sim C / C ++ apenas recentemente ganhou um modelo de memória, mas isso não significa que eles eram completamente inadequados para código sem bloqueio anteriormente. O GCC e outros compiladores de alta qualidade tinham diretivas específicas do compilador para fazer a programação livre de bloqueios em plataformas suportadas por um tempo muito longo & # 8211; simplesmente não foi padronizado na linguagem. O Linux e outras plataformas forneceram essas primitivas por algum tempo também. A posição única do Java era que ele fornecia um modelo de memória formalizado que garantia trabalhar em todas as plataformas suportadas. Embora em princípio isso seja incrível, a maioria dos desenvolvedores do lado do servidor trabalha em uma plataforma (Linux / Windows). Eles já tinham as ferramentas para criar código livre de bloqueio para sua plataforma.
GC é uma ótima ferramenta, mas não é necessária. Tem um custo tanto em termos de desempenho quanto em complexidade (todos os truques necessários para evitar o STW GC). O C ++ 11 / C11 já tem suporte para modelos de memória adequados. Não esqueçamos que as JVMs não têm responsabilidade de suportar a API insegura no futuro. Código não seguro é "inseguro" # 8221; então você perde os benefícios dos recursos de segurança do Java. Finalmente IMO o código Unsafe usado para layout de memória e simular estruturas em Java parece muito mais feio do que estruturas C / C ++ onde o compilador está fazendo esse trabalho para você de uma maneira confiável. C e C ++ também fornecem acesso a todas as ferramentas elétricas específicas de plataforma de baixo nível, como PAUSE ins, SSE / AVX / NEON etc. Você pode até mesmo ajustar o layout do seu código através de scripts de linker! A energia fornecida pela cadeia de ferramentas C / C ++ é realmente incomparável pela JVM. Java é uma ótima plataforma, mas eu acho que a maior vantagem é que a lógica de negócios comum (90% do seu código?) Ainda pode depender dos recursos de GC e segurança e fazer uso de bibliotecas altamente ajustadas e testadas. com inseguro. Este é um ótimo trade-off entre obter os últimos 5% de perf e ser produtivo. Um trade-off que faz sentido para muitas pessoas, mas um trade-off, no entanto. Escrever código de aplicativo complicado em C / C ++ é um pesadelo afinal.
Em seg, 10 de março de 2014 às 12:52, CodeDependents escreveu:
& gt; Graham Swan comentou: "Vou dar uma olhada, Benjamin. Obrigado por & gt; apontando-os para fora. & # 8221;
Faltando o 12º: Não use idiomas coletados garbadge. O GC é um gargalo no pior cenário. É provável que pare todos os threads. É um global. Ele distrai o arquiteto a gerenciar um dos recursos mais comuns (memória próxima à CPU).
Na verdade, muito desse trabalho vem diretamente do Java. Para fazer a programação livre de bloqueios, você precisa de um modelo de memória clara que o c ++ apenas recentemente ganhou. Se você sabe como trabalhar com o GC e não contra ele, pode criar sistemas de baixa latência com muito mais facilidade.
Eu tenho que concordar com Ben aqui. Houve muito progresso no paralelismo do GC na última década, com o colecionador do G1 sendo o mais recente encantamento. Pode demorar um pouco para ajustar o heap e vários botões para fazer o GC coletar quase sem pausa, mas isso não é nada em comparação com o tempo que o desenvolvedor leva para não ter o GC.
Você pode até mesmo dar um passo além e criar sistemas que produzam tão pouco lixo que você pode facilmente empurrar seu GC para fora de sua janela de operação. É assim que todas as lojas de negociação de alta frequência fazem isso quando executadas na JVM.
A coleta de lixo para programação sem bloqueio é um pouco de deus ex machina. As filas de MPMC e SPSC podem ser construídas sem necessidade de GC. Há também muitas maneiras de fazer a programação livre de bloqueios sem coleta de lixo e a contagem de referência não é o único caminho. Ponteiros de perigo, RCU, Proxy-Collectors etc todos fornecem suporte para recuperação diferida e são codificados em suporte de um algoritmo (não genérico), portanto, eles são muito mais fáceis de construir. É claro que o trade-off está no fato de que os GC de qualidade de produção têm muito trabalho neles e ajudarão os programadores menos experientes a escrever algoritmos livres de bloqueio (eles deveriam estar fazendo isso?) Sem codificar esquemas de recuperação diferidos. . Alguns links sobre o trabalho realizado neste campo: cs. toronto. edu/
Sim C / C ++ apenas recentemente ganhou um modelo de memória, mas isso não significa que eles eram completamente inadequados para código sem bloqueio anteriormente. O GCC e outros compiladores de alta qualidade tinham diretivas específicas do compilador para fazer a programação livre de bloqueios em plataformas suportadas por um tempo muito longo & # 8211; simplesmente não foi padronizado na linguagem. O Linux e outras plataformas forneceram essas primitivas por algum tempo também. A posição única do Java era que ele fornecia um modelo de memória formalizado que garantia trabalhar em todas as plataformas suportadas. Embora em princípio isso seja incrível, a maioria dos desenvolvedores do lado do servidor trabalha em uma plataforma (Linux / Windows). Eles já tinham as ferramentas para criar código livre de bloqueio para sua plataforma.
GC é uma ótima ferramenta, mas não é necessária. Tem um custo tanto em termos de desempenho quanto em complexidade (todos os truques necessários para atrasar e evitar o STW GC). O C ++ 11 / C11 já tem suporte para modelos de memória adequados. Não esqueçamos que as JVMs não têm responsabilidade de suportar a API insegura no futuro. Código não seguro é "inseguro" # 8221; então você perde os benefícios dos recursos de segurança do Java. Finalmente IMO o código Unsafe usado para layout de memória e simular estruturas em Java parece muito mais feio do que estruturas C / C ++ onde o compilador está fazendo esse trabalho para você de uma maneira confiável. C e C ++ também fornecem acesso a todas as ferramentas elétricas específicas de plataforma de baixo nível, como PAUSE ins, SSE / AVX / NEON etc. Você pode até mesmo ajustar o layout do seu código através de scripts de linker! A energia fornecida pela cadeia de ferramentas C / C ++ é realmente incomparável pela JVM. Java é uma ótima plataforma, mas eu acho que a maior vantagem é que a lógica de negócios comum (90% do seu código?) Ainda pode depender dos recursos de GC e segurança e fazer uso de bibliotecas altamente ajustadas e testadas. com inseguro. Este é um ótimo trade-off entre obter os últimos 5% de perf e ser produtivo. Um trade-off que faz sentido para muitas pessoas, mas um trade-off, no entanto. Escrever código de aplicativo complicado em C / C ++ é um pesadelo afinal.
& gt; Não use idiomas coletados garbadge.
Ou, pelo menos, & # 8220; tradicional & # 8221; lixo coletado idiomas. Porque eles são diferentes & # 8211; enquanto o Erlang também tem um coletor, ele não cria gargalos porque ele não pára o mundo & # 8221; como Java ao coletar lixo & # 8211; em vez disso, ele interrompe micro-threads individuais pequenas & # 8221; em uma escala de microssegundos, por isso não é perceptível no grande.
Reescreva isso para o & # 8220; tradicional & # 8221; coleta de lixo [i] algoritmos [/ i]. Na LMAX, usamos o Azul Zing e, usando apenas uma JVM diferente com uma abordagem diferente para a coleta de lixo, observamos grandes melhorias no desempenho, porque tanto os GC principais quanto os menores são ordens de magnitude mais baratas.
Existem outros custos que compensam isso, é claro: você usa muito mais, e o Zing não é barato.
Reblogou isso em Java Prorgram Examples e comentou:
Um dos artigos de leitura obrigatória para programadores Java, é a lição que você aprenderá depois de passar um tempo considerável ajustando e desenvolvendo sistemas de baixa latência em Java em 10 minutos.
Revivendo um fio antigo, mas (surpreendentemente) isso tem que ser apontado:
1) Linguagens de nível superior (por exemplo, Java) não provocam funcionalidade do hardware que não está disponível para linguagens de nível inferior (por exemplo, C); afirmar que tal e tal é "impossível" # 8221; em C, embora prontamente realizável em Java, é um lixo completo sem reconhecer que o Java é executado em hardware virtual, em que a JVM precisa sintetizar a funcionalidade exigida pelo Java, mas não fornecida pelo hardware físico. Se uma JVM (por exemplo, escrita em C) puder sintetizar a funcionalidade X, o mesmo poderá acontecer com um programador C.
2) & # 8220; Bloqueio livre & # 8221; Não é o que as pessoas pensam, exceto quase por coincidência em certas circunstâncias, como x86 de núcleo único; O x86 multicore não pode ser executado sem bloqueio sem barreiras de memória, que têm complexidades e custos semelhantes ao bloqueio regular. Como por 1 acima, se o lock free funciona em um determinado ambiente, é porque ele é suportado pelo hardware ou emulado / sintetizado pelo software em um ambiente virtual.
Grandes Pontos Julius. O ponto que eu estava tentando (talvez sem sucesso) é que é proibitivamente difícil aplicar muitos desses padrões em C, já que eles confiam no GC. Vai além de simplesmente usar barreiras de memória. Você tem que considerar a liberdade de memória, o que fica particularmente difícil quando você está lidando com o bloqueio livre e esperar algoritmos livres. É aqui que a GC adiciona uma grande vitória. Dito isso, ouvi dizer que Rust tem algumas idéias muito interessantes sobre a propriedade da memória que podem começar a resolver alguns desses problemas.

Negociação de Ultra-Baixa Latência.
A latência ultrabaixa é a chave para ganhar sua negociação pelo preço que você deseja antes que o preço da ação se mova. Isso é verdade, seja você um operador de alta frequência, um criador de mercado ou um operador de arbitragem estatística.
Os sistemas de negociação algorítmica usam técnicas como co-location, redes de caminho mais curto e, cada vez mais, interfaces Ethernet 10G e tecnologias Field Programmable Gate Array (FPGA) para minimizar a latência e obter uma vantagem competitiva. Tecnologias de FPGA de baixa latência - muitas vezes chamadas de dispositivos lógicos programáveis ​​- são inestimáveis ​​na competição no nível principal. O New Wave DV oferece dispositivos programáveis ​​personalizados para as suas necessidades de negociação de baixa latência.
A tecnologia de dispositivos programáveis ​​do New Wave DV oferece aos nossos clientes a vantagem que faz a diferença entre ganhar o negócio e ver alguém ganhar. É por isso que os principais nomes dos mercados financeiros confiam em nossos produtos. Entre em contato conosco para obter a tecnologia de negociação de baixíssima latência de que você precisa.
Como funcionam os dispositivos lógicos programáveis ​​para negociação de alta frequência?
Um sistema de negociação analisa dados de mercado de várias bolsas de valores, usa estratégias de negociação financeira para encontrar oportunidades de negociação e usa uma interface de latência ultra baixa para colocar os pedidos na fila de negociação primeiro.
A fim de reduzir a latência, é necessário empurrar a tomada de decisão sobre negociações para a Placa de Interface de Rede (NIC), o que alivia a necessidade de envolver o processador principal do sistema, o que poderia causar atrasos indesejáveis ​​no tempo de resposta. Esse processamento no lado da rede (onde o processamento ocorre o mais próximo possível da interface de rede) é essencial para o projeto de um sistema de negociação verdadeiramente de baixíssima latência.
Benefícios da tecnologia FPGA de baixa latência personalizada da New Wave DV.
Com base na tecnologia FPGA de baixa latência, nossa tecnologia de negociação de baixa latência oferece inúmeras vantagens.
Executar transações em um FPGA New Wave DV, localizado próximo à interface física da rede, elimina as latências causadas pelo barramento host, pelo processador host e pelo sistema operacional. Isso reduz drasticamente o tempo de resposta de negociação. Nossos FPGAs de baixa latência fornecem desempenho de velocidade de fio, permitindo a execução quase instantânea da parte do algoritmo que detecta e atua nas oportunidades de negociação antes que outras pessoas percebam a oportunidade. Nossos FPGAs podem ser reprogramados durante a operação, permitindo que parâmetros e algoritmos sejam alterados e atualizados, mantendo você à frente da concorrência. Os FPGAs DV da New Wave são excelentes no processamento paralelo, o que permite que eles atuem em várias transações simultaneamente. Nossos FPGAs de baixa latência podem incluir uma estrutura de desenvolvimento que encurta o ciclo de desenvolvimento para os usuários e permite que eles se concentrem no desenvolvimento de seus sistemas e algoritmos proprietários. Cada FPGA do New Wave Design & amp; A verificação é um dispositivo lógico programável personalizado; Vamos projetar seu dispositivo programável para atender às suas necessidades e vencer sua concorrência.
Entre em contato com a New Wave DV para soluções de negociação de latência ultra baixa.
O New Wave DV oferece os melhores cartões FPGA 10G Ethernet de latência ultra-baixa, com estrutura de desenvolvimento de aplicativos fácil de usar. Nossa experiência em tecnologia de negociação de baixa latência vem de anos de fornecimento de soluções para os mercados financeiros. Entregamos no prazo e dentro do orçamento em uma indústria onde cada segundo e cada centavo faz ou quebra um acordo.
Entre em contato com a New Wave DV para obter uma tecnologia FPGA de alta performance e ultrabaixa latência. Ou navegue pelos nossos produtos para encontrar a solução que você precisa.

Arquitetura de pregão.
Idiomas disponíveis.
Opções de download.
Ver com o Adobe Reader em uma variedade de dispositivos.
Índice.
Arquitetura de pregão.
Visão geral executiva.
Maior concorrência, maior volume de dados de mercado e novas demandas regulatórias são algumas das forças motrizes por trás das mudanças na indústria. As empresas estão tentando manter sua vantagem competitiva mudando constantemente suas estratégias de negociação e aumentando a velocidade de negociação.
Uma arquitetura viável precisa incluir as tecnologias mais recentes dos domínios de rede e de aplicativo. Tem que ser modular para fornecer um caminho gerenciável para evoluir cada componente com o mínimo de interrupção no sistema geral. Portanto, a arquitetura proposta por este artigo é baseada em uma estrutura de serviços. Examinamos serviços como mensagens de baixíssima latência, monitoramento de latência, multicast, computação, armazenamento, virtualização de dados e aplicativos, resiliência comercial, mobilidade comercial e thin client.
A solução para os complexos requisitos da plataforma de negociação da próxima geração deve ser construída com uma mentalidade holística, cruzando as fronteiras de silos tradicionais como negócios e tecnologia ou aplicativos e redes.
O principal objetivo deste documento é fornecer diretrizes para a criação de uma plataforma de negociação de baixíssima latência e, ao mesmo tempo, otimizar o throughput bruto e a taxa de mensagens para dados de mercado e ordens de negociação FIX.
Para conseguir isso, estamos propondo as seguintes tecnologias de redução de latência:
• Interconexão de alta velocidade - conectividade InfiniBand ou 10 Gbps para o cluster de negociação.
• Barramento de mensagens de alta velocidade.
• Aceleração de aplicativos via RDMA sem re-código do aplicativo.
• Monitoramento de latência em tempo real e redirecionamento do tráfego de negociação para o caminho com latência mínima.
Tendências e Desafios da Indústria.
As arquiteturas comerciais da próxima geração precisam responder às crescentes demandas por velocidade, volume e eficiência. Por exemplo, espera-se que o volume de dados do mercado de opções dobre após a introdução do trading centavo em 2007. Existem também exigências regulatórias para a melhor execução, que exigem o manuseio de atualizações de preços a taxas que se aproximam de 1 milhão de msg / seg. para trocas. Eles também exigem visibilidade do frescor dos dados e prova de que o cliente obteve a melhor execução possível.
No curto prazo, a velocidade de negociação e inovação são os principais diferenciais. Um número crescente de negociações é tratado por aplicativos de comércio algorítmico colocados o mais próximo possível do local de execução da negociação. Um desafio com estes "black-box" mecanismos de negociação é que eles compõem o aumento de volume emitindo ordens apenas para cancelá-los e reenviá-los. A causa desse comportamento é a falta de visibilidade sobre qual local oferece a melhor execução. O comerciante humano é agora um "engenheiro financeiro" um "quant" (analista quantitativo) com habilidades de programação, que podem ajustar os modelos de negociação em tempo real. As empresas desenvolvem novos instrumentos financeiros, como derivativos climáticos ou negociações entre classes de ativos, e precisam implantar os novos aplicativos rapidamente e de forma escalável.
No longo prazo, a diferenciação competitiva deve vir da análise, não apenas do conhecimento. Os principais traders do futuro assumem riscos, obtêm uma visão verdadeira do cliente e batem consistentemente no mercado (fonte IBM: www-935.ibm/services/us/imc/pdf/ge510-6270-trader. pdf).
A resiliência dos negócios tem sido uma das principais preocupações das empresas de trading desde 11 de setembro de 2001. As soluções nesta área variam desde centros de dados redundantes localizados em diferentes geografias e conectados a múltiplos locais de negociação até soluções de negociadores virtuais oferecendo aos operadores de mercado a maior parte da funcionalidade de uma plataforma de negociação em um local remoto.
O setor de serviços financeiros é um dos mais exigentes em termos de requisitos de TI. O setor está passando por uma mudança arquitetônica em direção à Arquitetura Orientada a Serviços (SOA), serviços da Web e virtualização de recursos de TI. A SOA aproveita o aumento da velocidade da rede para permitir a vinculação dinâmica e a virtualização de componentes de software. Isso permite a criação de novos aplicativos sem perder o investimento em sistemas e infraestrutura existentes. O conceito tem o potencial de revolucionar a forma como a integração é feita, permitindo reduções significativas na complexidade e no custo de tal integração (gigaspaces / download / MerrilLynchGigaSpacesWP. pdf).
Outra tendência é a consolidação de servidores em farms de servidores de data center, enquanto as mesas de operação possuem apenas extensões KVM e clientes ultra-thin (por exemplo, SunRay e HP blade solutions). As redes de área metropolitana de alta velocidade permitem que os dados de mercado sejam multicast entre diferentes locais, permitindo a virtualização do pregão.
Arquitetura de alto nível.
A Figura 1 descreve a arquitetura de alto nível de um ambiente comercial. A fábrica de tickers e os mecanismos de negociação algorítmica estão localizados no cluster de negociação de alto desempenho no data center da empresa ou na bolsa de valores. Os comerciantes humanos estão localizados na área de aplicativos do usuário final.
Funcionalmente, há dois componentes de aplicativos no ambiente comercial corporativo, editores e assinantes. O barramento de mensagens fornece o caminho de comunicação entre editores e assinantes.
Existem dois tipos de tráfego específicos para um ambiente de negociação:
• Dados de mercado - carrega informações sobre preços para instrumentos financeiros, notícias e outras informações de valor agregado, como análises. É unidirecional e muito sensível à latência, normalmente entregue em multicast UDP. É medido em atualizações / seg. e em Mbps. Os dados de mercado fluem de um ou vários feeds externos, provenientes de provedores de dados de mercado, como bolsas de valores, agregadores de dados e ECNs. Cada provedor tem seu próprio formato de dados de mercado. Os dados são recebidos por manipuladores de feeds, aplicativos especializados que normalizam e limpam os dados e os enviam para os consumidores de dados, como mecanismos de preços, aplicativos de comércio algorítmico ou comerciantes humanos. As empresas do lado da venda também enviam os dados do mercado para seus clientes, empresas compradoras, como fundos mútuos, fundos de hedge e outros gerentes de ativos. Algumas empresas de buy-side podem optar por receber feeds diretos das trocas, reduzindo a latência.
Figura 1 Arquitetura de negociação para uma empresa do lado de compra / venda.
Não existe um padrão da indústria para formatos de dados de mercado. Cada troca tem seu formato proprietário. Provedores de conteúdo financeiro, como Reuters e Bloomberg, agregam diferentes fontes de dados de mercado, normalizam e adicionam notícias ou análises. Exemplos de feeds consolidados são RDF (Reuters Data Feed), RWF (Reuters Wire Format) e Bloomberg Professional Services Data.
Para fornecer dados de mercado de latência mais baixa, os dois fornecedores lançaram feeds de dados de mercado em tempo real que são menos processados ​​e têm menos análises:
- Bloomberg B-Pipe - Com o B-Pipe, a Bloomberg separa seu feed de dados de mercado de sua plataforma de distribuição porque um terminal Bloomberg não é necessário para obter o B-Pipe. Wombat e Reuters Feed Handlers anunciaram o apoio ao B-Pipe.
Uma empresa pode decidir receber feeds diretamente de uma troca para reduzir a latência. Os ganhos na velocidade de transmissão podem variar entre 150 milissegundos e 500 milissegundos. Esses feeds são mais complexos e mais caros e a empresa precisa construir e manter sua própria fábrica de tickers (financetech / featured / showArticle. jhtml? ArticleID = 60404306).
• Ordens de negociação - esse tipo de tráfego transporta as negociações reais. É bidirecional e muito sensível à latência. É medido em mensagens / seg. e Mbps. Os pedidos são originários de uma empresa de buy side ou sell side e são enviados para plataformas de negociação como uma Exchange ou ECN para execução. O formato mais comum para o transporte de pedidos é o FIX (Financial Information eXchange - fixprotocol /). Os aplicativos que manipulam mensagens FIX são chamados de mecanismos FIX e interagem com sistemas de gerenciamento de pedidos (OMS).
Uma otimização para o FIX é chamada de FAST (correção adaptada para streaming), que usa um esquema de compactação para reduzir o tamanho da mensagem e, com efeito, reduzir a latência. O FAST é voltado mais para a entrega de dados de mercado e tem o potencial de se tornar um padrão. O FAST também pode ser usado como um esquema de compactação para formatos de dados de mercado proprietários.
Para reduzir a latência, as empresas podem optar por estabelecer o Acesso Direto ao Mercado (Direct Market Access - DMA).
O DMA é o processo automatizado de encaminhamento de uma ordem de títulos diretamente para um local de execução, evitando assim a intervenção de terceiros (towergroup / research / content / glossary. jsp? Page = 1 & glossaryId = 383). O DMA requer uma conexão direta com o local de execução.
O barramento de mensagens é um software de middleware de fornecedores como a Tibco, a 29West, a Reuters RMDS ou uma plataforma de código aberto, como o AMQP. O barramento de mensagens usa um mecanismo confiável para entregar mensagens. O transporte pode ser feito via TCP / IP (TibcoEMS, 29West, RMDS e AMQP) ou UDP / multicast (TibcoRV, 29West e RMDS). Um conceito importante na distribuição de mensagens é o & quot; stream de tópico & quot; que é um subconjunto de dados de mercado definidos por critérios como símbolo de ticker, setor ou uma determinada cesta de instrumentos financeiros. Os inscritos participam de grupos de tópicos mapeados em um ou vários subtópicos para receber apenas as informações relevantes. No passado, todos os comerciantes recebiam todos os dados do mercado. Nos volumes atuais de tráfego, isso seria sub-ótimo.
A rede desempenha um papel crítico no ambiente de negociação. Os dados de mercado são transportados para o pregão onde os comerciantes humanos estão localizados através de uma rede de alta velocidade Campus ou Metro Area. Alta disponibilidade e baixa latência, bem como alta taxa de transferência, são as métricas mais importantes.
O ambiente comercial de alto desempenho possui a maioria de seus componentes no farm de servidores do Data Center. Para minimizar a latência, os mecanismos de negociação algorítmica precisam estar localizados próximos aos manipuladores de feeds, mecanismos FIX e sistemas de gerenciamento de pedidos. Um modelo de implantação alternativo possui os sistemas de negociação algorítmica localizados em uma troca ou um provedor de serviços com conectividade rápida para várias trocas.
Modelos de implantação.
Existem dois modelos de implantação para uma plataforma de negociação de alto desempenho. As empresas podem optar por ter uma mistura dos dois:
• Data Center da empresa de trading (Figura 2) - Este é o modelo tradicional, onde uma plataforma de negociação completa é desenvolvida e mantida pela empresa com links de comunicação para todas as plataformas de negociação. A latência varia com a velocidade dos links e o número de saltos entre a empresa e os locais.
Figura 2 Modelo de Implantação Tradicional.
• Co-location na plataforma de negociação (bolsas, prestadores de serviços financeiros (FSP)) (Figura 3)
A empresa comercial implanta sua plataforma de negociação automatizada o mais próximo possível dos locais de execução para minimizar a latência.
Figura 3 Modelo de Implantação Hospedada.
Arquitetura de Negociação Orientada a Serviços.
Estamos propondo uma estrutura orientada a serviços para a construção da arquitetura comercial de próxima geração. Essa abordagem fornece uma estrutura conceitual e um caminho de implementação com base na modularização e minimização de interdependências.
Essa estrutura fornece às empresas uma metodologia para:
• Avalie seu estado atual em termos de serviços.
• Priorizar serviços com base em seu valor para o negócio.
• Evolua a plataforma de negociação para o estado desejado usando uma abordagem modular.
A arquitetura de negociação de alto desempenho conta com os seguintes serviços, conforme definido pela estrutura de arquitetura de serviços representada na Figura 4.
Figura 4 Estrutura de Arquitetura de Serviço para Negociação de Alto Desempenho.
Tabela 1 Descrições e Tecnologias de Serviço.
Mensagens de latência ultra baixa.
Instrumentação - appliances, agentes de software e módulos roteadores.
Virtualização de SO e E / S, RDMA (Remote Direct Memory Access), TOE (TCP Offload Engines)
Middleware que paraleliza o processamento de aplicativos.
Middleware que acelera o acesso a dados para aplicativos, por exemplo, armazenamento em cache na memória.
Replicação multicast assistida por hardware através da rede; otimizações multicast Camada 2 e Camada 3.
Virtualização de hardware de armazenamento (VSANs), replicação de dados, backup remoto e virtualização de arquivos.
Resiliência comercial e mobilidade.
Balanceamento de carga local e local e redes de campus de alta disponibilidade.
Serviços de aplicativos de área ampla.
Aceleração de aplicativos em uma conexão WAN para comerciantes residindo fora do campus.
Serviço de cliente fino.
Desacoplamento dos recursos de computação dos terminais voltados para o usuário final.
Serviço de Mensagens de Latência Ultra-Baixa.
Esse serviço é fornecido pelo barramento de mensagens, que é um sistema de software que resolve o problema de conectar muitos-para-muitos aplicativos. O sistema consiste em:
• Um conjunto de esquemas de mensagens predefinidos.
• Um conjunto de mensagens de comando comuns.
• Uma infraestrutura de aplicativos compartilhados para enviar as mensagens para os destinatários. A infraestrutura compartilhada pode ser baseada em um intermediário de mensagem ou em um modelo de publicação / assinatura.
Os principais requisitos para o barramento de mensagens da próxima geração são (fonte 29West):
• menor latência possível (por exemplo, menos de 100 microssegundos)
• Estabilidade sob carga pesada (por exemplo, mais de 1,4 milhões de msg / segundo)
• Controle e flexibilidade (controle de taxa e transporte configurável)
Há esforços no setor para padronizar o barramento de mensagens. O AMQP (Advanced Message Queuing Protocol) é um exemplo de um padrão aberto promovido pelo J. P. Morgan Chase e apoiado por um grupo de fornecedores como Cisco, Envoy Technologies, Red Hat, TWIST Process Innovations, Iona, 29West e iMatix. Dois dos principais objetivos são fornecer um caminho mais simples para a interoperabilidade de aplicativos escritos em plataformas diferentes e modularidade para que o middleware possa ser facilmente desenvolvido.
Em termos muito gerais, um servidor AMQP é análogo a um servidor de E-mail, com cada troca agindo como um agente de transferência de mensagens e cada fila de mensagens como uma caixa de correio. As ligações definem as tabelas de roteamento em cada agente de transferência. Os editores enviam mensagens para agentes de transferência individuais, que encaminham as mensagens para caixas de correio. Os consumidores recebem mensagens de caixas de correio, o que cria um modelo poderoso e flexível que é simples (fonte: amqp / tikiwiki / tiki-index. php? Page = OpenApproach # Why_AMQP_).
Serviço de Monitoramento de Latência.
Os principais requisitos para este serviço são:
• Granularidade de medidas de sub-milissegundos.
• Visibilidade em tempo quase real sem adicionar latência ao tráfego de negociação.
• Capacidade de diferenciar a latência do processamento de aplicativos da latência de trânsito da rede.
• Capacidade de lidar com altas taxas de mensagens.
• Fornecer uma interface programática para aplicativos de negociação para receber dados de latência, permitindo que os mecanismos de negociação algorítmica se adaptem às condições em constante mudança.
• Correlacionar eventos de rede com eventos do aplicativo para fins de solução de problemas.
A latência pode ser definida como o intervalo de tempo entre o momento em que uma ordem de negociação é enviada e quando a mesma ordem é reconhecida e aceita pela parte receptora.
Abordar a questão da latência é um problema complexo, exigindo uma abordagem holística que identifique todas as fontes de latência e aplique diferentes tecnologias em diferentes camadas do sistema.
A Figura 5 mostra a variedade de componentes que podem introduzir latência em cada camada da pilha OSI. Ele também mapeia cada fonte de latência com uma possível solução e uma solução de monitoramento. Essa abordagem em camadas pode oferecer às empresas uma maneira mais estruturada de atacar a questão da latência, em que cada componente pode ser considerado como um serviço e tratado de forma consistente em toda a empresa.
A manutenção de uma medida precisa do estado dinâmico desse intervalo de tempo em rotas e destinos alternativos pode ser de grande ajuda nas decisões de negociação tática. A capacidade de identificar a localização exata dos atrasos, seja na rede de borda do cliente, no hub de processamento central ou no nível do aplicativo de transação, determina significativamente a capacidade dos provedores de serviços de cumprir seus contratos de nível de serviço (SLAs). Para os formulários buy-side e sell-side, bem como para os sindicatos de dados de mercado, a rápida identificação e remoção de gargalos traduz-se diretamente em melhores oportunidades e receitas comerciais.
Figura 5 Arquitetura de Gerenciamento de Latência.
Ferramentas de monitoramento de baixa latência da Cisco.
As ferramentas tradicionais de monitoramento de rede operam com minutos ou segundos de granularidade. As plataformas de negociação da próxima geração, especialmente aquelas que suportam o comércio algorítmico, exigem latências inferiores a 5 ms e níveis extremamente baixos de perda de pacotes. Em uma LAN Gigabit, uma microburst de 100 ms pode causar 10.000 transações a serem perdidas ou excessivamente atrasadas.
A Cisco oferece aos seus clientes uma variedade de ferramentas para medir a latência em um ambiente de negociação:
• Gerente de Qualidade de Largura de Banda (BQM) (OEM da Corvil)
• Solução de Monitoramento de Latência de Serviços Financeiros (FSMS) baseada em Cisco AON
Gerente de Qualidade de Largura de Banda.
O Bandwidth Quality Manager (BQM) 4.0 é um produto de gerenciamento de desempenho de aplicativos de rede de última geração que permite que os clientes monitorem e provisionem sua rede para níveis controlados de latência e desempenho de perda. Embora o BQM não seja voltado exclusivamente para redes comerciais, sua visibilidade de microssegundos combinada com recursos de provisionamento de largura de banda inteligente o torna ideal para esses ambientes exigentes.
O Cisco BQM 4.0 implementa um amplo conjunto de tecnologias de medição de tráfego e análise de rede patenteadas e com patente pendente que proporcionam ao usuário visibilidade e compreensão sem precedentes sobre como otimizar a rede para obter o máximo desempenho do aplicativo.
O Cisco BQM agora é suportado na família de produtos do Cisco Application Deployment Engine (ADE). A família de produtos Cisco ADE é a plataforma escolhida para aplicativos de gerenciamento de rede da Cisco.
Benefícios do BQM.
A microvisualização do Cisco BQM é a capacidade de detectar, medir e analisar eventos de tráfego de latência, jitter e perda induzidos em níveis de microssegundos com granularidade por resolução de pacote. Isso permite que o Cisco BQM detecte e determine o impacto de eventos de tráfego na latência, instabilidade e perda da rede. Crítico para ambientes de negociação é que o BQM pode suportar medições de latência, perda e jitter unidirecionais para tráfego TCP e UDP (multicast). Isso significa que ele é relatado perfeitamente para tráfego de tráfego e feeds de dados de mercado.
O BQM permite que o usuário especifique um conjunto abrangente de limites (em relação à atividade de microburst, latência, perda, jitter, utilização, etc.) em todas as interfaces. Em seguida, o BQM opera uma captura de pacote de rolagem em segundo plano. Sempre que ocorre uma violação de limite ou outro evento de degradação de desempenho potencial, ele aciona o Cisco BQM para armazenar a captura de pacote no disco para análise posterior. Isso permite que o usuário examine detalhadamente tanto o tráfego do aplicativo que foi afetado pela degradação do desempenho (& quot; as vítimas & quot;) quanto o tráfego que causou a degradação do desempenho (& quot; os culpados & quot;). Isso pode reduzir significativamente o tempo gasto no diagnóstico e na solução de problemas de desempenho da rede.
O BQM também é capaz de fornecer recomendações detalhadas de provisionamento de políticas de largura de banda e qualidade de serviço (QoS), que o usuário pode aplicar diretamente para obter o desempenho de rede desejado.
Medidas de BQM ilustradas.
Para entender a diferença entre algumas das técnicas de medição mais convencionais e a visibilidade fornecida pelo BQM, podemos observar alguns gráficos de comparação. No primeiro conjunto de gráficos (Figura 6 e Figura 7), vemos a diferença entre a latência medida pelo Passive Network Quality Monitor (PNQM) do BQM e a latência medida pela injeção de pacotes de ping a cada 1 segundo no fluxo de tráfego.
Na Figura 6, vemos a latência relatada por pacotes de ping ICMP de 1 segundo para tráfego de rede real (ele é dividido por 2 para fornecer uma estimativa para o atraso unidirecional). Ele mostra o atraso confortavelmente abaixo de cerca de 5ms durante quase todo o tempo.
Figura 6 Latência reportada por pacotes de ping ICMP de 1 segundo para tráfego de rede real.
Na Figura 7, vemos a latência relatada pelo PNQM para o mesmo tráfego ao mesmo tempo. Aqui vemos que medindo a latência unidirecional dos pacotes de aplicativos reais, obtemos uma imagem radicalmente diferente. Aqui, a latência parece estar pairando em torno de 20 ms, com surtos ocasionais muito mais altos. A explicação é que, como o ping está enviando pacotes apenas a cada segundo, está faltando completamente a maior parte da latência de tráfego do aplicativo. Na verdade, os resultados do ping normalmente indicam apenas atraso de propagação de ida e volta em vez de latência de aplicativo realista na rede.
Figura 7 Latência Relatada pelo PNQM para o Real Network Traffic.
No segundo exemplo (Figura 8), vemos a diferença na carga reportada ou níveis de saturação entre uma visualização média de 5 minutos e uma visão de microburst de 5 ms (o BQM pode reportar a exatidão de cerca de 10-100 nanossegundos em microbursts). A linha verde mostra que a média de utilização nas médias de 5 minutos é baixa, talvez até 5 Mbits / s. O gráfico azul escuro mostra a atividade de microburst de 5ms atingindo entre 75 Mbits / se 100 Mbits / s, a velocidade da LAN efetivamente. O BQM mostra esse nível de granularidade para todas as aplicações e também fornece regras de provisionamento claras para permitir que o usuário controle ou neutralize esses microbursts.
Figura 8 Diferença na carga de link reportada entre uma visualização média de 5 minutos e uma exibição de microssonda de 5 ms.
Implantação de BQM na Rede de Negociação.
A Figura 9 mostra uma implantação típica do BQM em uma rede de negociação.
Figura 9 Implantação típica do BQM em uma rede de negociação.
O BQM pode então ser usado para responder a esses tipos de perguntas:
• Algum dos meus principais links de LAN Gigabit está saturado por mais de X milissegundos? Isso está causando perda? Quais links seriam mais beneficiados com uma atualização para as velocidades Etherchannel ou 10 Gigabit?
• Qual tráfego de aplicativos está causando a saturação dos meus links de 1 Gigabit?
• Algum dos dados de mercado apresenta perda de ponta a ponta?
• Quanta latência adicional o data center de failover enfrenta? Este link é dimensionado corretamente para lidar com microbursts?
• Meus traders estão recebendo atualizações de baixa latência da camada de distribuição de dados de mercado? Eles estão vendo algum atraso maior que X milissegundos?
Ser capaz de responder a essas perguntas de maneira simples e eficaz economiza tempo e dinheiro na execução da rede de negociação.
O BQM é uma ferramenta essencial para ganhar visibilidade em dados de mercado e ambientes de negociação. Ele fornece medições granulares de latência de ponta a ponta em infraestruturas complexas que sofrem movimentação de dados de alto volume. Detectar efetivamente microbursts em níveis sub-milissegundos e receber análise especializada em um determinado evento é inestimável para os arquitetos de pregão. Smart bandwidth provisioning recommendations, such as sizing and what-if analysis, provide greater agility to respond to volatile market conditions. As the explosion of algorithmic trading and increasing message rates continues, BQM, combined with its QoS tool, provides the capability of implementing QoS policies that can protect critical trading applications.
Cisco Financial Services Latency Monitoring Solution.
Cisco and Trading Metrics have collaborated on latency monitoring solutions for FIX order flow and market data monitoring. Cisco AON technology is the foundation for a new class of network-embedded products and solutions that help merge intelligent networks with application infrastructure, based on either service-oriented or traditional architectures. Trading Metrics is a leading provider of analytics software for network infrastructure and application latency monitoring purposes (tradingmetrics/).
The Cisco AON Financial Services Latency Monitoring Solution (FSMS) correlated two kinds of events at the point of observation:
• Network events correlated directly with coincident application message handling.
• Trade order flow and matching market update events.
Using time stamps asserted at the point of capture in the network, real-time analysis of these correlated data streams permits precise identification of bottlenecks across the infrastructure while a trade is being executed or market data is being distributed. By monitoring and measuring latency early in the cycle, financial companies can make better decisions about which network service—and which intermediary, market, or counterparty—to select for routing trade orders. Likewise, this knowledge allows more streamlined access to updated market data (stock quotes, economic news, etc.), which is an important basis for initiating, withdrawing from, or pursuing market opportunities.
The components of the solution are:
• AON hardware in three form factors:
– AON Network Module for Cisco 2600/2800/3700/3800 routers.
– AON Blade for the Cisco Catalyst 6500 series.
– AON 8340 Appliance.
• Trading Metrics M&A 2.0 software, which provides the monitoring and alerting application, displays latency graphs on a dashboard, and issues alerts when slowdowns occur (tradingmetrics/TM_brochure. pdf).
Figure 10 AON-Based FIX Latency Monitoring.
Cisco IP SLA.
Cisco IP SLA is an embedded network management tool in Cisco IOS which allows routers and switches to generate synthetic traffic streams which can be measured for latency, jitter, packet loss, and other criteria (cisco/go/ipsla).
Two key concepts are the source of the generated traffic and the target. Both of these run an IP SLA "responder," which has the responsibility to timestamp the control traffic before it is sourced and returned by the target (for a round trip measurement). Various traffic types can be sourced within IP SLA and they are aimed at different metrics and target different services and applications. The UDP jitter operation is used to measure one-way and round-trip delay and report variations. As the traffic is time stamped on both sending and target devices using the responder capability, the round trip delay is characterized as the delta between the two timestamps.
A new feature was introduced in IOS 12.3(14)T, IP SLA Sub Millisecond Reporting, which allows for timestamps to be displayed with a resolution in microseconds, thus providing a level of granularity not previously available. This new feature has now made IP SLA relevant to campus networks where network latency is typically in the range of 300-800 microseconds and the ability to detect trends and spikes (brief trends) based on microsecond granularity counters is a requirement for customers engaged in time-sensitive electronic trading environments.
As a result, IP SLA is now being considered by significant numbers of financial organizations as they are all faced with requirements to:
• Report baseline latency to their users.
• Trend baseline latency over time.
• Respond quickly to traffic bursts that cause changes in the reported latency.
Sub-millisecond reporting is necessary for these customers, since many campus and backbones are currently delivering under a second of latency across several switch hops. Electronic trading environments have generally worked to eliminate or minimize all areas of device and network latency to deliver rapid order fulfillment to the business. Reporting that network response times are "just under one millisecond" is no longer sufficient; the granularity of latency measurements reported across a network segment or backbone need to be closer to 300-800 micro-seconds with a degree of resolution of 100 ì segundos.
IP SLA recently added support for IP multicast test streams, which can measure market data latency.
A typical network topology is shown in Figure 11 with the IP SLA shadow routers, sources, and responders.
Figure 11 IP SLA Deployment.
Computing Services.
Computing services cover a wide range of technologies with the goal of eliminating memory and CPU bottlenecks created by the processing of network packets. Trading applications consume high volumes of market data and the servers have to dedicate resources to processing network traffic instead of application processing.
• Transport processing—At high speeds, network packet processing can consume a significant amount of server CPU cycles and memory. An established rule of thumb states that 1Gbps of network bandwidth requires 1 GHz of processor capacity (source Intel white paper on I/O acceleration intel/technology/ioacceleration/306517.pdf).
• Intermediate buffer copying—In a conventional network stack implementation, data needs to be copied by the CPU between network buffers and application buffers. This overhead is worsened by the fact that memory speeds have not kept up with increases in CPU speeds. For example, processors like the Intel Xeon are approaching 4 GHz, while RAM chips hover around 400MHz (for DDR 3200 memory) (source Intel intel/technology/ioacceleration/306517.pdf).
• Context switching—Every time an individual packet needs to be processed, the CPU performs a context switch from application context to network traffic context. This overhead could be reduced if the switch would occur only when the whole application buffer is complete.
Figure 12 Sources of Overhead in Data Center Servers.
• TCP Offload Engine (TOE)—Offloads transport processor cycles to the NIC. Moves TCP/IP protocol stack buffer copies from system memory to NIC memory.
• Remote Direct Memory Access (RDMA)—Enables a network adapter to transfer data directly from application to application without involving the operating system. Eliminates intermediate and application buffer copies (memory bandwidth consumption).
• Kernel bypass — Direct user-level access to hardware. Dramatically reduces application context switches.
Figure 13 RDMA and Kernel Bypass.
InfiniBand is a point-to-point (switched fabric) bidirectional serial communication link which implements RDMA, among other features. Cisco offers an InfiniBand switch, the Server Fabric Switch (SFS): cisco/application/pdf/en/us/guest/netsol/ns500/c643/cdccont_0900aecd804c35cb. pdf.
Figure 14 Typical SFS Deployment.
Trading applications benefit from the reduction in latency and latency variability, as proved by a test performed with the Cisco SFS and Wombat Feed Handlers by Stac Research:
Application Virtualization Service.
De-coupling the application from the underlying OS and server hardware enables them to run as network services. One application can be run in parallel on multiple servers, or multiple applications can be run on the same server, as the best resource allocation dictates. This decoupling enables better load balancing and disaster recovery for business continuance strategies. The process of re-allocating computing resources to an application is dynamic. Using an application virtualization system like Data Synapse's GridServer, applications can migrate, using pre-configured policies, to under-utilized servers in a supply-matches-demand process (networkworld/supp/2005/ndc1/022105virtual. html? page=2).
There are many business advantages for financial firms who adopt application virtualization:
• Faster time to market for new products and services.
• Faster integration of firms following merger and acquisition activity.
• Increased application availability.
• Better workload distribution, which creates more "head room" for processing spikes in trading volume.
• Operational efficiency and control.
• Reduction in IT complexity.
Currently, application virtualization is not used in the trading front-office. One use-case is risk modeling, like Monte Carlo simulations. As the technology evolves, it is conceivable that some the trading platforms will adopt it.
Data Virtualization Service.
To effectively share resources across distributed enterprise applications, firms must be able to leverage data across multiple sources in real-time while ensuring data integrity. With solutions from data virtualization software vendors such as Gemstone or Tangosol (now Oracle), financial firms can access heterogeneous sources of data as a single system image that enables connectivity between business processes and unrestrained application access to distributed caching. The net result is that all users have instant access to these data resources across a distributed network (gridtoday/03/0210/101061.html).
This is called a data grid and is the first step in the process of creating what Gartner calls Extreme Transaction Processing (XTP) (gartner/DisplayDocument? ref=g_search&id=500947). Technologies such as data and applications virtualization enable financial firms to perform real-time complex analytics, event-driven applications, and dynamic resource allocation.
One example of data virtualization in action is a global order book application. An order book is the repository of active orders that is published by the exchange or other market makers. A global order book aggregates orders from around the world from markets that operate independently. The biggest challenge for the application is scalability over WAN connectivity because it has to maintain state. Today's data grids are localized in data centers connected by Metro Area Networks (MAN). This is mainly because the applications themselves have limits—they have been developed without the WAN in mind.
Figure 15 GemStone GemFire Distributed Caching.
Before data virtualization, applications used database clustering for failover and scalability. This solution is limited by the performance of the underlying database. Failover is slower because the data is committed to disc. With data grids, the data which is part of the active state is cached in memory, which reduces drastically the failover time. Scaling the data grid means just adding more distributed resources, providing a more deterministic performance compared to a database cluster.
Multicast Service.
Market data delivery is a perfect example of an application that needs to deliver the same data stream to hundreds and potentially thousands of end users. Market data services have been implemented with TCP or UDP broadcast as the network layer, but those implementations have limited scalability. Using TCP requires a separate socket and sliding window on the server for each recipient. UDP broadcast requires a separate copy of the stream for each destination subnet. Both of these methods exhaust the resources of the servers and the network. The server side must transmit and service each of the streams individually, which requires larger and larger server farms. On the network side, the required bandwidth for the application increases in a linear fashion. For example, to send a 1 Mbps stream to 1000recipients using TCP requires 1 Gbps of bandwidth.
IP multicast is the only way to scale market data delivery. To deliver a 1 Mbps stream to 1000 recipients, IP multicast would require 1 Mbps. The stream can be delivered by as few as two servers—one primary and one backup for redundancy.
There are two main phases of market data delivery to the end user. In the first phase, the data stream must be brought from the exchange into the brokerage's network. Typically the feeds are terminated in a data center on the customer premise. The feeds are then processed by a feed handler, which may normalize the data stream into a common format and then republish into the application messaging servers in the data center.
The second phase involves injecting the data stream into the application messaging bus which feeds the core infrastructure of the trading applications. The large brokerage houses have thousands of applications that use the market data streams for various purposes, such as live trades, long term trending, arbitrage, etc. Many of these applications listen to the feeds and then republish their own analytical and derivative information. For example, a brokerage may compare the prices of CSCO to the option prices of CSCO on another exchange and then publish ratings which a different application may monitor to determine how much they are out of synchronization.
Figure 16 Market Data Distribution Players.
The delivery of these data streams is typically over a reliable multicast transport protocol, traditionally Tibco Rendezvous. Tibco RV operates in a publish and subscribe environment. Each financial instrument is given a subject name, such as CSCO. last. Each application server can request the individual instruments of interest by their subject name and receive just a that subset of the information. This is called subject-based forwarding or filtering. Subject-based filtering is patented by Tibco.
A distinction should be made between the first and second phases of market data delivery. The delivery of market data from the exchange to the brokerage is mostly a one-to-many application. The only exception to the unidirectional nature of market data may be retransmission requests, which are usually sent using unicast. The trading applications, however, are definitely many-to-many applications and may interact with the exchanges to place orders.
Figure 17 Market Data Architecture.
Design Issues.
Number of Groups/Channels to Use.
Many application developers consider using thousand of multicast groups to give them the ability to divide up products or instruments into small buckets. Normally these applications send many small messages as part of their information bus. Usually several messages are sent in each packet that are received by many users. Sending fewer messages in each packet increases the overhead necessary for each message.
In the extreme case, sending only one message in each packet quickly reaches the point of diminishing returns—there is more overhead sent than actual data. Application developers must find a reasonable compromise between the number of groups and breaking up their products into logical buckets.
Consider, for example, the Nasdaq Quotation Dissemination Service (NQDS). The instruments are broken up alphabetically:
Another example is the Nasdaq Totalview service, broken up this way:
This approach allows for straight forward network/application management, but does not necessarily allow for optimized bandwidth utilization for most users. A user of NQDS that is interested in technology stocks, and would like to subscribe to just CSCO and INTL, would have to pull down all the data for the first two groups of NQDS. Understanding the way users pull down the data and then organize it into appropriate logical groups optimizes the bandwidth for each user.
In many market data applications, optimizing the data organization would be of limited value. Typically customers bring in all data into a few machines and filter the instruments. Using more groups is just more overhead for the stack and does not help the customers conserve bandwidth. Another approach might be to keep the groups down to a minimum level and use UDP port numbers to further differentiate if necessary. The other extreme would be to use just one multicast group for the entire application and then have the end user filter the data. In some situations this may be sufficient.
Intermittent Sources.
A common issue with market data applications are servers that send data to a multicast group and then go silent for more than 3.5 minutes. These intermittent sources may cause trashing of state on the network and can introduce packet loss during the window of time when soft state and then hardware shorts are being created.
PIM-Bidir or PIM-SSM.
The first and best solution for intermittent sources is to use PIM-Bidir for many-to-many applications and PIM-SSM for one-to-many applications.
Both of these optimizations of the PIM protocol do not have any data-driven events in creating forwarding state. That means that as long as the receivers are subscribed to the streams, the network has the forwarding state created in the hardware switching path.
Intermittent sources are not an issue with PIM-Bidir and PIM-SSM.
Null Packets.
In PIM-SM environments a common method to make sure forwarding state is created is to send a burst of null packets to the multicast group before the actual data stream. The application must efficiently ignore these null data packets to ensure it does not affect performance. The sources must only send the burst of packets if they have been silent for more than 3 minutes. A good practice is to send the burst if the source is silent for more than a minute. Many financials send out an initial burst of traffic in the morning and then all well-behaved sources do not have problems.
Periodic Keepalives or Heartbeats.
An alternative approach for PIM-SM environments is for sources to send periodic heartbeat messages to the multicast groups. This is a similar approach to the null packets, but the packets can be sent on a regular timer so that the forwarding state never expires.
S, G Expiry Timer.
Finally, Cisco has made a modification to the operation of the S, G expiry timer in IOS. There is now a CLI knob to allow the state for a S, G to stay alive for hours without any traffic being sent. The (S, G) expiry timer is configurable. This approach should be considered a workaround until PIM-Bidir or PIM-SSM is deployed or the application is fixed.
RTCP Feedback.
A common issue with real time voice and video applications that use RTP is the use of RTCP feedback traffic. Unnecessary use of the feedback option can create excessive multicast state in the network. If the RTCP traffic is not required by the application it should be avoided.
Fast Producers and Slow Consumers.
Today many servers providing market data are attached at Gigabit speeds, while the receivers are attached at different speeds, usually 100Mbps. This creates the potential for receivers to drop packets and request re-transmissions, which creates more traffic that the slowest consumers cannot handle, continuing the vicious circle.
The solution needs to be some type of access control in the application that limits the amount of data that one host can request. QoS and other network functions can mitigate the problem, but ultimately the subscriptions need to be managed in the application.
Tibco Heartbeats.
TibcoRV has had the ability to use IP multicast for the heartbeat between the TICs for many years. However, there are some brokerage houses that are still using very old versions of TibcoRV that use UDP broadcast support for the resiliency. This limitation is often cited as a reason to maintain a Layer 2 infrastructure between TICs located in different data centers. These older versions of TibcoRV should be phased out in favor of the IP multicast supported versions.
Multicast Forwarding Options.
PIM Sparse Mode.
The standard IP multicast forwarding protocol used today for market data delivery is PIM Sparse Mode. It is supported on all Cisco routers and switches and is well understood. PIM-SM can be used in all the network components from the exchange, FSP, and brokerage.
There are, however, some long-standing issues and unnecessary complexity associated with a PIM-SM deployment that could be avoided by using PIM-Bidir and PIM-SSM. These are covered in the next sections.
The main components of the PIM-SM implementation are:
• PIM Sparse Mode v2.
• Shared Tree (spt-threshold infinity)
A design option in the brokerage or in the exchange.
Details of Anycast RP can be found in:
The classic high availability design for Tibco in the brokerage network is documented in:
Bidirectional PIM.
PIM-Bidir is an optimization of PIM Sparse Mode for many-to-many applications. It has several key advantages over a PIM-SM deployment:
• Better support for intermittent sources.
• No data-triggered events.
One of the weaknesses of PIM-SM is that the network continually needs to react to active data flows. This can cause non-deterministic behavior that may be hard to troubleshoot. PIM-Bidir has the following major protocol differences over PIM-SM:
– No source registration.
Source traffic is automatically sent to the RP and then down to the interested receivers. There is no unicast encapsulation, PIM joins from the RP to the first hop router and then registration stop messages.
All PIM-Bidir traffic is forwarded on a *,G forwarding entry. The router does not have to monitor the traffic flow on a *,G and then send joins when the traffic passes a threshold.
– No need for an actual RP.
The RP does not have an actual protocol function in PIM-Bidir. The RP acts as a routing vector in which all the traffic converges. The RP can be configured as an address that is not assigned to any particular device. This is called a Phantom RP.
– No need for MSDP.
MSDP provides source information between RPs in a PIM-SM network. PIM-Bidir does not use the active source information for any forwarding decisions and therefore MSDP is not required.
Bidirectional PIM is ideally suited for the brokerage network in the data center of the exchange. In this environment there are many sources sending to a relatively few set of groups in a many-to-many traffic pattern.
The key components of the PIM-Bidir implementation are:
Further details about Phantom RP and basic PIM-Bidir design are documented in:
Source Specific Multicast.
PIM-SSM is an optimization of PIM Sparse Mode for one-to-many applications. In certain environments it can offer several distinct advantages over PIM-SM. Like PIM-Bidir, PIM-SSM does not rely on any data-triggered events. Furthermore, PIM-SSM does not require an RP at all—there is no such concept in PIM-SSM. The forwarding information in the network is completely controlled by the interest of the receivers.
Source Specific Multicast is ideally suited for market data delivery in the financial service provider. The FSP can receive the feeds from the exchanges and then route them to the end of their network.
Many FSPs are also implementing MPLS and Multicast VPNs in their core. PIM-SSM is the preferred method for transporting traffic in VRFs.
When PIM-SSM is deployed all the way to the end user, the receiver indicates his interest in a particular S, G with IGMPv3. Even though IGMPv3 was defined by RFC 2236 back in October, 2002, it still has not been implemented by all edge devices. This creates a challenge for deploying an end-to-end PIM-SSM service. A transitional solution has been developed by Cisco to enable an edge device that supports IGMPv2 to participate in an PIM-SSM service. This feature is called SSM Mapping and is documented in:
Storage Services.
The service provides storage capabilities into the market data and trading environments. Trading applications access backend storage to connect to different databases and other repositories consisting of portfolios, trade settlements, compliance data, management applications, Enterprise Service Bus (ESB), and other critical applications where reliability and security is critical to the success of the business. The main requirements for the service are:
Storage virtualization is an enabling technology that simplifies management of complex infrastructures, enables non-disruptive operations, and facilitates critical elements of a proactive information lifecycle management (ILM) strategy. EMC Invista running on the Cisco MDS 9000 enables heterogeneous storage pooling and dynamic storage provisioning, allowing allocation of any storage to any application. High availability is increased with seamless data migration. Appropriate class of storage is allocated to point-in-time copies (clones). Storage virtualization is also leveraged through the use of Virtual Storage Area Networks (VSANs), which enable the consolidation of multiple isolated SANs onto a single physical SAN infrastructure, while still partitioning them as completely separate logical entities. VSANs provide all the security and fabric services of traditional SANs, yet give organizations the flexibility to easily move resources from one VSAN to another. This results in increased disk and network utilization while driving down the cost of management. Integrated Inter VSAN Routing (IVR) enables sharing of common resources across VSANs.
Figure 18 High Performance Computing Storage.
Replication of data to a secondary and tertiary data center is crucial for business continuance. Replication offsite over Fiber Channel over IP (FCIP) coupled with write acceleration and tape acceleration provides improved performance over long distance. Continuous Data Replication (CDP) is another mechanism which is gaining popularity in the industry. It refers to backup of computer data by automatically saving a copy of every change made to that data, essentially capturing every version of the data that the user saves. It allows the user or administrator to restore data to any point in time. Solutions from EMC and Incipient utilize the SANTap protocol on the Storage Services Module (SSM) in the MDS platform to provide CDP functionality. The SSM uses the SANTap service to intercept and redirect a copy of a write between a given initiator and target. The appliance does not reside in the data path—it is completely passive. The CDP solutions typically leverage a history journal that tracks all changes and bookmarks that identify application-specific events. This ensures that data at any point in time is fully self-consistent and is recoverable instantly in the event of a site failure.
Backup procedure reliability and performance are extremely important when storing critical financial data to a SAN. The use of expensive media servers to move data from disk to tape devices can be cumbersome. Network-accelerated serverless backup (NASB) helps you back up increased amounts of data in shorter backup time frames by shifting the data movement from multiple backup servers to Cisco MDS 9000 Series multilayer switches. This technology decreases impact on application servers because the MDS offloads the application and backup servers. It also reduces the number of backup and media servers required, thus reducing CAPEX and OPEX. The flexibility of the backup environment increases because storage and tape drives can reside anywhere on the SAN.
Trading Resilience and Mobility.
The main requirements for this service are to provide the virtual trader:
• Fully scalable and redundant campus trading environment.
• Resilient server load balancing and high availability in analytic server farms.
• Global site load balancing that provide the capability to continue participating in the market venues of closest proximity.
A highly-available campus environment is capable of sustaining multiple failures (i. e., links, switches, modules, etc.), which provides non-disruptive access to trading systems for traders and market data feeds. Fine-tuned routing protocol timers, in conjunction with mechanisms such as NSF/SSO, provide subsecond recovery from any failure.
The high-speed interconnect between data centers can be DWDM/dark fiber, which provides business continuance in case of a site failure. Each site is 100km-200km apart, allowing synchronous data replication. Usually the distance for synchronous data replication is 100km, but with Read/Write Acceleration it can stretch to 200km. A tertiary data center can be greater than 200km away, which would replicate data in an asynchronous fashion.
Figure 19 Trading Resilience.
A robust server load balancing solution is required for order routing, algorithmic trading, risk analysis, and other services to offer continuous access to clients regardless of a server failure. Multiple servers encompass a "farm" and these hosts can added/removed without disruption since they reside behind a virtual IP (VIP) address which is announced in the network.
A global site load balancing solution provides remote traders the resiliency to access trading environments which are closer to their location. This minimizes latency for execution times since requests are always routed to the nearest venue.
Figure 20 Virtualization of Trading Environment.
A trading environment can be virtualized to provide segmentation and resiliency in complex architectures. Figure 20 illustrates a high-level topology depicting multiple market data feeds entering the environment, whereby each vendor is assigned its own Virtual Routing and Forwarding (VRF) instance. The market data is transferred to a high-speed InfiniBand low-latency compute fabric where feed handlers, order routing systems, and algorithmic trading systems reside. All storage is accessed via a SAN and is also virtualized with VSANs, allowing further security and segmentation. The normalized data from the compute fabric is transferred to the campus trading environment where the trading desks reside.
Wide Area Application Services.
This service provides application acceleration and optimization capabilities for traders who are located outside of the core trading floor facility/data center and working from a remote office. To consolidate servers and increase security in remote offices, file servers, NAS filers, storage arrays, and tape drives are moved to a corporate data center to increase security and regulatory compliance and facilitate centralized storage and archival management. As the traditional trading floor is becoming more virtual, wide area application services technology is being utilized to provide a "LAN-like" experience to remote traders when they access resources at the corporate site. Traders often utilize Microsoft Office applications, especially Excel in addition to Sharepoint and Exchange. Excel is used heavily for modeling and permutations where sometime only small portions of the file are changed. CIFS protocol is notoriously known to be "chatty," where several message normally traverse the WAN for a simple file operation and it is addressed by Wide Area Application Service (WAAS) technology. Bloomberg and Reuters applications are also very popular financial tools which access a centralized SAN or NAS filer to retrieve critical data which is fused together before represented to a trader's screen.
Figure 21 Wide Area Optimization.
A pair of Wide Area Application Engines (WAEs) that reside in the remote office and the data center provide local object caching to increase application performance. The remote office WAEs can be a module in the ISR router or a stand-alone appliance. The data center WAE devices are load balanced behind an Application Control Engine module installed in a pair of Catalyst 6500 series switches at the aggregation layer. The WAE appliance farm is represented by a virtual IP address. The local router in each site utilizes Web Cache Communication Protocol version 2 (WCCP v2) to redirect traffic to the WAE that intercepts the traffic and determines if there is a cache hit or miss. The content is served locally from the engine if it resides in cache; otherwise the request is sent across the WAN the initial time to retrieve the object. This methodology optimizes the trader experience by removing application latency and shielding the individual from any congestion in the WAN.
WAAS uses the following technologies to provide application acceleration:
• Data Redundancy Elimination (DRE) is an advanced form of network compression which allows the WAE to maintain a history of previously-seen TCP message traffic for the purposes of reducing redundancy found in network traffic. This combined with the Lempel-Ziv (LZ) compression algorithm reduces the number of redundant packets that traverse the WAN, which improves application transaction performance and conserves bandwidth.
• Transport Flow Optimization (TFO) employs a robust TCP proxy to safely optimize TCP at the WAE device by applying TCP-compliant optimizations to shield the clients and servers from poor TCP behavior because of WAN conditions. By running a TCP proxy between the devices and leveraging an optimized TCP stack between the devices, many of the problems that occur in the WAN are completely blocked from propagating back to trader desktops. The traders experience LAN-like TCP response times and behavior because the WAE is terminating TCP locally. TFO improves reliability and throughput through increases in TCP window scaling and sizing enhancements in addition to superior congestion management.
Thin Client Service.
This service provides a "thin" advanced trading desktop which delivers significant advantages to demanding trading floor environments requiring continuous growth in compute power. As financial institutions race to provide the best trade executions for their clients, traders are utilizing several simultaneous critical applications that facilitate complex transactions. It is not uncommon to find three or more workstations and monitors at a trader's desk which provide visibility into market liquidity, trading venues, news, analysis of complex portfolio simulations, and other financial tools. In addition, market dynamics continue to evolve with Direct Market Access (DMA), ECNs, alternative trading volumes, and upcoming regulation changes with Regulation National Market System (RegNMS) in the US and Markets in Financial Instruments Directive (MiFID) in Europe. At the same time, business seeks greater control, improved ROI, and additional flexibility, which creates greater demands on trading floor infrastructures.
Traders no longer require multiple workstations at their desk. Thin clients consist of keyboard, mouse, and multi-displays which provide a total trader desktop solution without compromising security. Hewlett Packard, Citrix, Desktone, Wyse, and other vendors provide thin client solutions to capitalize on the virtual desktop paradigm. Thin clients de-couple the user-facing hardware from the processing hardware, thus enabling IT to grow the processing power without changing anything on the end user side. The workstation computing power is stored in the data center on blade workstations, which provide greater scalability, increased data security, improved business continuance across multiple sites, and reduction in OPEX by removing the need to manage individual workstations on the trading floor. One blade workstation can be dedicated to a trader or shared among multiple traders depending on the requirements for computer power.
The "thin client" solution is optimized to work in a campus LAN environment, but can also extend the benefits to traders in remote locations. Latency is always a concern when there is a WAN interconnecting the blade workstation and thin client devices. The network connection needs to be sized accordingly so traffic is not dropped if saturation points exist in the WAN topology. WAN Quality of Service (QoS) should prioritize sensitive traffic. There are some guidelines which should be followed to allow for an optimized user experience. A typical highly-interactive desktop experience requires a client-to-blade round trip latency of <20ms for a 2Kb packet size. There may be a slight lag in display if network latency is between 20ms to 40ms. A typical trader desk with a four multi-display terminal requires 2-3Mbps bandwidth consumption with seamless communication with blade workstation(s) in the data center. Streaming video (800x600 at 24fps/full color) requires 9 Mbps bandwidth usage.
Figure 22 Thin Client Architecture.
Management of a large thin client environment is simplified since a centralized IT staff manages all of the blade workstations dispersed across multiple data centers. A trader is redirected to the most available environment in the enterprise in the event of a particular site failure. High availability is a key concern in critical financial environments and the Blade Workstation design provides rapid provisioning of another blade workstation in the data center. This resiliency provides greater uptime, increases in productivity, and OpEx reduction.

Комментариев нет:

Отправить комментарий